summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>2008-01-22 14:11:44 +0000
committermanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>2008-01-22 14:11:44 +0000
commita54ab3301add6ff86ab26d16ae784338a10da35f (patch)
treebb2483418bbf2754d717a1b449693c17c0eae2ce
parentf437e46d0c8b9f30bb5cbacee71e2a23bc41b420 (diff)
downloadgcc-a54ab3301add6ff86ab26d16ae784338a10da35f.tar.gz
2008-01-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR 32102 * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1. * flags.h (warn_strict_aliasing): Remove. (warn_strict_overflow): Remove. * opts.c (warn_strict_aliasing): Remove. (warn_strict_overflow): Remove. * c-opts.c (c_common_handle_option): -Wall only sets -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized. (c_common_post_options): Give default values to -Wstrict-aliasing and -Wstrict-overflow if they are uninitialized. * common.opt (Wstrict-aliasing): Specify Var and Init. (Wstrict-overflow): Likewise. testsuite/ * gcc.dg/Wstrict-overflow-21.c: New. * g++.dg/warn/Wstrict-aliasing-8.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131720 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog15
-rw-r--r--gcc/c-opts.c11
-rw-r--r--gcc/common.opt4
-rw-r--r--gcc/doc/invoke.texi2
-rw-r--r--gcc/flags.h10
-rw-r--r--gcc/opts.c8
-rw-r--r--gcc/testsuite/ChangeLog6
7 files changed, 33 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 639b0fbedcd..bc76be76da4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,18 @@
+2008-01-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ PR 32102
+ * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
+ * flags.h (warn_strict_aliasing): Remove.
+ (warn_strict_overflow): Remove.
+ * opts.c (warn_strict_aliasing): Remove.
+ (warn_strict_overflow): Remove.
+ * c-opts.c (c_common_handle_option): -Wall only sets
+ -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
+ (c_common_post_options): Give default values to -Wstrict-aliasing
+ and -Wstrict-overflow if they are uninitialized.
+ * common.opt (Wstrict-aliasing): Specify Var and Init.
+ (Wstrict-overflow): Likewise.
+
2008-01-22 Kenneth Zadeck <zadeck@naturalbridge.com>
PR rtl-optimization/26854
diff --git a/gcc/c-opts.c b/gcc/c-opts.c
index ee9b7acc713..4cb76872be3 100644
--- a/gcc/c-opts.c
+++ b/gcc/c-opts.c
@@ -401,9 +401,11 @@ c_common_handle_option (size_t scode, const char *arg, int value)
warn_return_type = value;
warn_sequence_point = value; /* Was C only. */
warn_switch = value;
- set_Wstrict_aliasing (value);
+ if (warn_strict_aliasing == -1)
+ set_Wstrict_aliasing (value);
warn_address = value;
- warn_strict_overflow = value;
+ if (warn_strict_overflow == -1)
+ warn_strict_overflow = value;
warn_array_bounds = value;
/* Only warn about unknown pragmas that are not in system
@@ -1090,6 +1092,11 @@ c_common_post_options (const char **pfilename)
if (warn_pointer_sign == -1)
warn_pointer_sign = 0;
+ if (warn_strict_aliasing == -1)
+ warn_strict_aliasing = 0;
+ if (warn_strict_overflow == -1)
+ warn_strict_overflow = 0;
+
/* -Woverlength-strings is off by default, but is enabled by -pedantic.
It is never enabled in C++, as the minimum limit is not normative
in that standard. */
diff --git a/gcc/common.opt b/gcc/common.opt
index 5c659e4d307..810f879fe48 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -155,7 +155,7 @@ Common Warning
Warn about code which might break strict aliasing rules
Wstrict-aliasing=
-Common Joined UInteger Warning
+Common Joined UInteger Var(warn_strict_aliasing) Init(-1) Warning
Warn about code which might break strict aliasing rules
Wstrict-overflow
@@ -163,7 +163,7 @@ Common Warning
Warn about optimizations that assume that signed overflow is undefined
Wstrict-overflow=
-Common Joined UInteger Warning
+Common Joined UInteger Var(warn_strict_overflow) Init(-1) Warning
Warn about optimizations that assume that signed overflow is undefined
Wswitch
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index a41f9725f38..6b145532ff4 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -2649,7 +2649,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
-Wsequence-point @gol
-Wsign-compare @r{(only in C++)} @gol
-Wstrict-aliasing @gol
--Wstrict-overflow @gol
+-Wstrict-overflow=1 @gol
-Wswitch @gol
-Wtrigraphs @gol
-Wuninitialized @r{(only with} @option{-O1} @r{and above)} @gol
diff --git a/gcc/flags.h b/gcc/flags.h
index d52d030a0d7..e3174732995 100644
--- a/gcc/flags.h
+++ b/gcc/flags.h
@@ -137,16 +137,6 @@ extern void set_Wstrict_aliasing (int onoff);
extern bool warn_larger_than;
extern HOST_WIDE_INT larger_than_size;
-/* Nonzero means warn about constructs which might not be strict
- aliasing safe. */
-
-extern int warn_strict_aliasing;
-
-/* Nonzero means warn about optimizations which rely on undefined
- signed overflow. */
-
-extern int warn_strict_overflow;
-
/* Temporarily suppress certain warnings.
This is set while reading code from a system header file. */
diff --git a/gcc/opts.c b/gcc/opts.c
index 5d952c6304e..16ca6bf81ab 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -58,14 +58,6 @@ bool extra_warnings;
bool warn_larger_than;
HOST_WIDE_INT larger_than_size;
-/* Nonzero means warn about constructs which might not be
- strict-aliasing safe. */
-int warn_strict_aliasing;
-
-/* Nonzero means warn about optimizations which rely on undefined
- signed overflow. */
-int warn_strict_overflow;
-
/* Hack for cooperation between set_Wunused and set_Wextra. */
static bool maybe_warn_unused_parameter;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1c9c54c9b96..9a6eb68daab 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2008-01-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+ PR 32102
+ * gcc.dg/Wstrict-overflow-21.c: New.
+ * g++.dg/warn/Wstrict-aliasing-8.C: New.
+
+2008-01-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
PR middle-end/33092
* gcc.dg/pr33092.c: New.