aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>2000-08-09 19:52:35 +0000
committerKaveh Ghazi <ghazi@gcc.gnu.org>2000-08-09 19:52:35 +0000
commit253b6b828a1a1bd10e93829a57eedc82e7d1eff6 (patch)
tree642699475c334e9848542f89bced5ff0c706e4ed
parent2bf9a2abfe05e436bd66d6c30cda4b8c15a6b84c (diff)
downloadgcc-253b6b828a1a1bd10e93829a57eedc82e7d1eff6.zip
gcc-253b6b828a1a1bd10e93829a57eedc82e7d1eff6.tar.gz
gcc-253b6b828a1a1bd10e93829a57eedc82e7d1eff6.tar.bz2
c-typeck.c (process_init_element): For -Wtraditional, warn about initialization of unions.
* c-typeck.c (process_init_element): For -Wtraditional, warn about initialization of unions. * invoke.texi (-Wtraditional): Document new behavior. From-SVN: r35595
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/c-typeck.c9
-rw-r--r--gcc/invoke.texi7
3 files changed, 23 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f040ed8..2ff8a18 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2000-08-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * c-typeck.c (process_init_element): For -Wtraditional, warn about
+ initialization of unions.
+
+ * invoke.texi (-Wtraditional): Document new behavior.
+
2000-08-09 Zack Weinberg <zack@wolery.cumb.org>
* configure.in (--enable-c-cpplib): Uncomment. Use AC_DEFINE
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 0adc24a..66ec40e 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -6400,6 +6400,15 @@ process_init_element (value)
fieldtype = TYPE_MAIN_VARIANT (fieldtype);
fieldcode = TREE_CODE (fieldtype);
+ /* Warn that traditional C rejects initialization of unions.
+ We skip the warning if the value is zero. This is done
+ under the assumption that the zero initializer in user
+ code appears conditioned on e.g. __STDC__ to avoid
+ "missing initializer" warnings and relies on default
+ initialization to zero in the traditional C case. */
+ if (warn_traditional && !integer_zerop (value))
+ warning ("traditional C rejects initialization of unions");
+
/* Accept a string constant to initialize a subarray. */
if (value != 0
&& fieldcode == ARRAY_TYPE
diff --git a/gcc/invoke.texi b/gcc/invoke.texi
index 487e95e..a1096f1 100644
--- a/gcc/invoke.texi
+++ b/gcc/invoke.texi
@@ -1831,6 +1831,13 @@ Initialization of automatic aggregates.
@item
Identifier conflicts with labels. Traditional C lacks a separate
namespace for labels.
+
+@item
+Initialization of unions. If the initializer is zero, the warning is
+omitted. This is done under the assumption that the zero initializer in
+user code appears conditioned on e.g. @code{__STDC__} to avoid missing
+initializer warnings and relies on default initialization to zero in the
+traditional C case.
@end itemize
@item -Wundef