From: Kaveh R. Ghazi Date: Wed, 9 Aug 2000 19:52:35 +0000 (+0000) Subject: c-typeck.c (process_init_element): For -Wtraditional, warn about initialization of... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=253b6b828a1a1bd10e93829a57eedc82e7d1eff6;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f040ed8ffc9..2ff8a183c81 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2000-08-09 Kaveh R. Ghazi + + * c-typeck.c (process_init_element): For -Wtraditional, warn about + initialization of unions. + + * invoke.texi (-Wtraditional): Document new behavior. + 2000-08-09 Zack Weinberg * configure.in (--enable-c-cpplib): Uncomment. Use AC_DEFINE diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 0adc24a39eb..66ec40e3034 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 487e95e16c4..a1096f1d274 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