[Bug c/53119] -Wmissing-braces wrongly warns about universal zero initializer {0}

manu at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Apr 26 10:46:00 GMT 2012


Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:

           What    |Removed                     |Added
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #7 from Manuel López-Ibáñez <manu at gcc dot gnu.org> 2012-04-26 10:46:11 UTC ---
(In reply to comment #6)
> On Wed, 25 Apr 2012, manu at gcc dot gnu.org wrote:
> > It seems to me you are right. However, I cannot see how to check for ={0} at
> > the point of the warning.
> > 
> > Joseph, any ideas? This part of the C FE is ancient.
> In general I think Jakub is more expert on the code for handling 
> initializers than I am.

OK, but do you agree that the warning should be silenced always for ={0}?

Jakub, do you have any pointers for this? At the point of the warning "value"
is null, so I am not sure how to check for ={0}. There is a boolean zeroinit

        bool constructor_zeroinit =
         (VEC_length (constructor_elt, constructor_elements) == 1
          && integer_zerop
              (VEC_index (constructor_elt, constructor_elements, 0)->value));

but this vector is not initialized in this case.

More information about the Gcc-bugs mailing list