OSDN Git Service

* c-typeck.c (process_init_element): For -Wtraditional, warn about
authorghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Aug 2000 19:52:35 +0000 (19:52 +0000)
committerghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Aug 2000 19:52:35 +0000 (19:52 +0000)
initialization of unions.

* invoke.texi (-Wtraditional): Document new behavior.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35595 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-typeck.c
gcc/invoke.texi

index f040ed8..2ff8a18 100644 (file)
@@ -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
index 0adc24a..66ec40e 100644 (file)
@@ -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
index 487e95e..a1096f1 100644 (file)
@@ -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