On Wed, Jul 17, 2019 at 11:13:04AM -0700, Junio C Hamano wrote: > Jeff King <peff@xxxxxxxx> writes: > > > ... My big question is if we use "{}" for gcc (and > > compatible friends), does that squelch all of the complaints from other > > compilers and tools that might see the "{0}" version? In particular, > > does it work for sparse? > > Yeah, I agree that it is the most important question. The best > solution is not to do the macro, use "= { 0 };" everywhere *and* > somehow arrange sparse not to complain about it. I am not sure if > the last part is doable, though. I did just check "make range-diff.sp" with this diff: diff --git a/range-diff.c b/range-diff.c index ba1e9a4265..481cefff3e 100644 --- a/range-diff.c +++ b/range-diff.c @@ -102,7 +102,7 @@ static int read_patches(const char *range, struct string_list *list) } if (starts_with(line, "diff --git")) { - struct patch patch = { 0 }; + struct patch patch = { }; struct strbuf root = STRBUF_INIT; int linenr = 0; and it seems OK. So presumably we could just lump sparse into the list of gcc-compatible platforms, and it would work. But it does require the macro still for other hosts. Other than that, our options seem to be: 1. Live with it. IIRC we're already not sparse-clean, and Ramsay mostly looks at the diff to find new problems. 2. Pass -Wno-non-pointer-null to sparse. Unfortunately that also disables more useful warnings (like passing "0" instead of NULL to a function). 3. Switch to NULL here, and adhere to that going forward. -Peff