On Fri, Jul 29, 2022 at 3:53 PM Jeff King <peff@xxxxxxxx> wrote: > Subject: [PATCH] config.mak.dev: squelch -Wno-missing-braces for older gcc > > Versions of gcc prior to 4.9 complain about an initialization like: > > struct inner { int x; }; > struct outer { struct inner; }; > struct outer foo = { 0 }; > > and insist on: > > struct outer foo = { { 0 } }; > > Newer compilers handle this just fine. And ignoring the window even on > older compilers is fine; the resulting code is correct, but we just get > caught by -Werror. > > Let's relax this for older compilers to make developer lives easier (we > don't care much about non-developers on old compilers; they may see a > warning, but it won't stop compilation). > > Signed-off-by: Jeff King <peff@xxxxxxxx> Leaving aside for the moment the problem with Apple's oddball invented version numbers for `clang`, should this patch also take older `clang` versions into consideration rather than focusing only on `gcc`? (Of course, `clang` could be dealt with in a separate patch if you'd rather not worry about it here.) > diff --git a/config.mak.dev b/config.mak.dev > index 335efd4620..b9878a4994 100644 > --- a/config.mak.dev > +++ b/config.mak.dev > @@ -59,9 +59,13 @@ endif > > # uninitialized warnings on gcc 4.9.2 in xdiff/xdiffi.c and config.c > # not worth fixing since newer compilers correctly stop complaining > +# > +# Likwise, gcc older than 4.9 complains about initializing a > +# struct-within-a-struct using just "{ 0 }" > ifneq ($(filter gcc4,$(COMPILER_FEATURES)),) > ifeq ($(filter gcc5,$(COMPILER_FEATURES)),) > DEVELOPER_CFLAGS += -Wno-uninitialized > +DEVELOPER_CFLAGS += -Wno-missing-braces > endif > endif