Hi Luc, On 2020-05-20 01:22:22+0100, Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxxx> wrote: > > In standard C '{ 0 }' is valid to initialize any compound object. > > OTOH, Sparse allows '{ }' for the same purpose but: > > 1) '{ }' is not standard > > 2) Sparse warns when using '0' to initialize pointers. > > > > Some projects (git) legitimately like to be able to use the > > standard '{ 0 }' without the null-pointer warnings > > > > So, add a new warning flag (-Wno-universal-initializer) to > > handle '{ 0 }' as '{ }', suppressing the warnings. > > Hmm, I didn't think this would use a warning flag at all! > > I remember the discussion (on lkml and sparse ml) in which > there was general agreement that '{}' would be preferred > solution (if only it was standard C!). However, I thought > that (since some compilers don't support it e.g. msvc) the > next best solution would be for sparse to suppress the > warning if given the '= { 0 }' token sequence. (ie. no mention > of it being conditional on a option). I'm also in the camp of favouring no -W at all. But, have another -W is fine to me. > > Suggestions for a better name than this -W[no-]universal-initializer > > are warmly welcome. > > Heh, you know that I am no good at naming things - but this may well > give the impression of a C++ like 'int i{}' type initializer! >From this discussion in GCC's BugZilla [1], I think compiler people tend to call that style as zero-initialization, or universal zero initialization. [1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119#c12 -- Danh