Re: [PATCH 1/2] builtin/merge-file: fix compiler error on MacOS with clang 11.0.0
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Oct 6, 2022, 22:30 UTC
- Message-ID
- <CAPig+cT7_H6EDU9s1G38QrepACzN2vzCopAn7S=PDb0so_F21A@mail.gmail.com>
- In-Reply-To
- <36cd156b-edb2-062c-9422-bf39aad39a6d@web.de>
On Thu, Oct 6, 2022 at 5:25 PM René Scharfe <l.s.r@web.de> wrote:
Show 18 quoted lines
> Am 06.10.22 um 21:43 schrieb Jeff Hostetler via GitGitGadget:
> > Add extra set of braces around zero initialization of two array/structure
> > variables to resolve compiler errors/warnings from clang 11.0.0 on MacOS.
> > This is not needed on clang 14.0.
>
> Not sure how the Apple version numbers map to LLVM versions. I can
> reproduce it with Godbolt's Compiler Explorer with clang 8, but not
> with clang 9 or higher: https://godbolt.org/z/f7f7s9xxz
>
> > builtin/merge-file.c:29:23: error: suggest braces around initialization \
> > of subobject [-Werror,-Wmissing-braces]
> > mmfile_t mmfs[3] = { 0 };
> > ^
> > {}
>
> {0} is an idiom to zero-initialize any struct, no matter how deeply
> nested. It's valid C and the compiler warning about it is not helpful.
> Shouldn't we rather silence it with -Wno-missing-braces?That was indeed Ævar's suggestion in [1]:
Since this is only a warning, and only a practical issue with
-Werror I wonder if a config.mak.dev change wouldn't be better,
i.e. to provide a -Wno-missing-braces for this older clang
version.The problem is that Apple seems to invent their version numbers out of thin air with no relation to reality[2,3], so it may take some effort to work out suitable "version mapping rules" for config.mak.dev, and nobody has done it yet.
[1]: https://lore.kernel.org/git/220712.86lesy6cri.gmgdl@evledraar.gmail.com/ [2]: https://lore.kernel.org/git/Ys0hhYjPExuNWynE@coredump.intra.peff.net/ [3]: https://lore.kernel.org/git/YQ2LdvwEnZN9LUQn@coredump.intra.peff.net/