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
This commit is contained in:
Kaveh R. Ghazi 2000-08-09 19:52:35 +00:00 committed by Kaveh Ghazi
parent 2bf9a2abfe
commit 253b6b828a
3 changed files with 23 additions and 0 deletions

View 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

View 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

View 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