Re: [PATCH 0/2] Fix syntax errors under clang 11.0.0 on MacOS
- From
René Scharfe <l.s.r@web.de>
- Date
- Oct 7, 2022, 20:28 UTC
- Message-ID
- <ec920650-4334-a6f2-6d6f-241899dd79ec@web.de>
- In-Reply-To
- <xmqqpmf3frr5.fsf@gitster.g>
Am 07.10.22 um 19:49 schrieb Junio C Hamano:
Show 11 quoted lines
>
> 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 + # https://bugzilla.redhat.com/show_bug.cgi?id=2075786 ifneq ($(filter gcc12,$(COMPILER_FEATURES)),) DEVELOPER_CFLAGS += -Wno-error=stringop-overread