Backport gnu/gcc/gcc/c-typeck.c r1.3 to the gcc 3 code base:
authormiod <miod@openbsd.org>
Wed, 1 Feb 2023 20:34:10 +0000 (20:34 +0000)
committermiod <miod@openbsd.org>
Wed, 1 Feb 2023 20:34:10 +0000 (20:34 +0000)
commit50db8ec9b321cbb3b5efeb73511744c6a32beb82
treefc63293d0fe9f806638f7c3bd5e3ee3498855c09
parent7066554af3d4c0fe04a6394c31866a186f356f84
Backport gnu/gcc/gcc/c-typeck.c r1.3 to the gcc 3 code base:

Adjust how gcc3 handles the "missing braces around initializer" warning.

In c99 any value can be initalised using a { 0 } constructor independent
of the type. Now if a struct's first member is another struct then gcc4
issues the above warning but it should not do that.

Move the warning check from push_init_level() to pop_init_level() and
check if either { 0 } or { } was used. If additional implicit braces
were added surpress the warning.

Inspired by gcc PR#64709

light testing by me, serious testing by aoyama@
gnu/usr.bin/gcc/gcc/c-typeck.c