From: Jeff Hostetler Date: Fri, 07 Oct 2022 20:56:01 GMT Subject: Re: [PATCH 0/2] Fix syntax errors under clang 11.0.0 on MacOS Message-ID: <58d3ef47-2196-4f59-692a-fc86dfbc1252@jeffhostetler.com> In-Reply-To: On 10/7/22 4:28 PM, René Scharfe wrote: > Am 07.10.22 um 19:49 schrieb Junio C Hamano: >> >> My preference is to flip the -Wno-missing-braces bit in >> config.mak.uname only for folks who use the version of clang on >> macOS when that clang claims to be clang11 (my understanding of >> René's experiment[*] is that versions of (real) clang 9 or newer >> perfectly well understand that {0} is an accpetable way to specify >> zero initialization for any structure, with possible nesting). >> >> [Reference] >> >> * https://lore.kernel.org/git/36cd156b-edb2-062c-9422-bf39aad39a6d@web.de/ > > Wikipedia has a map that says Apple calls the LLVM clang 8 (i.e. the > real one) "11.0.0" and clang 9 "11.0.3": > > https://en.wikipedia.org/wiki/Xcode#Xcode_11.0_-_14.x_(since_SwiftUI_framework)_2 > > Perhaps like this? (No sign-off because I'm not comfortable with that > make function syntax, but feel free to steal salvageable parts.) > > diff --git a/config.mak.dev b/config.mak.dev > index 4fa19d361b..4d59c9044f 100644 > --- a/config.mak.dev > +++ b/config.mak.dev > @@ -69,6 +69,14 @@ DEVELOPER_CFLAGS += -Wno-missing-braces > endif > endif > > +# LLVM clang older than 9 and Apple clang older than 12 complain > +# about initializing a struct-within-a-struct using just "{ 0 }" > +ifneq ($(filter clang1,$(COMPILER_FEATURES)),) > +ifeq ($(filter $(if $(filter Darwin,$(uname_S)),clang12,clang9),$(COMPILER_FEATURES)),) > +DEVELOPER_CFLAGS += -Wno-missing-braces > +endif > +endif > + So if I understand you correctly, Apple clang 11 is broken and Apple clang 12 is good. I was getting ready to send (as soon as the CI finished) the following a simple to add the -Wno... for clang 11 and below on Darwin. +ifeq ($(uname_S),Darwin) +# Older versions of Apple clang complain about initializing a +# struct-within-a-struct using just "{0}" rather than "{{0}}". +# More recent versions do not. This error is considered a +# false-positive and not worth fixing, so just disable it. +ifeq ($(filter clang12,$(COMPILER_FEATURES)),) +DEVELOPER_CFLAGS += -Wno-missing-braces +endif +endif I'm not sure I understand all of what your suggestion does. Jeff