Message ID | pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 54795d37d9e689864989f30d769045eb02b01320 |
Headers | show |
Series | [v2] config.mak.dev: disable suggest braces error on old clang versions | expand |
"Jeff Hostetler via GitGitGadget" <gitgitgadget@gmail.com> writes: > Here is version 2. This version adds the "-Wno-missing-braces" compiler > flag when we are using an old version of clang -- rather than updating > the source files to use the "{{0}}" syntax that was expected by older > versions of clang. > > I've expanded the scope to include fixes for Apple's clang 11 and below > and non-Apple clang 8 and below. > > diff --git a/config.mak.dev b/config.mak.dev > index 4fa19d361b7..981304727c5 100644 > --- a/config.mak.dev > +++ b/config.mak.dev > @@ -69,6 +69,31 @@ DEVELOPER_CFLAGS += -Wno-missing-braces > endif > endif > > +# Old versions of clang complain about initializaing a > +# struct-within-a-struct using just "{0}" rather than "{{0}}". This > +# error is considered a false-positive and not worth fixing, because > +# new clang versions do not, so just disable it. > +# > +# The "bug" was fixed in upstream clang 9. > +# > +# Complicating this is that versions of clang released by Apple have > +# their own version numbers (associated with the corresponding version > +# of XCode) unrelated to the official clang version numbers. > +# > +# The bug was fixed in Apple clang 12. > +# > +ifneq ($(filter clang1,$(COMPILER_FEATURES)),) # if we are using clang > +ifeq ($(uname_S),Darwin) # if we are on darwin > +ifeq ($(filter clang12,$(COMPILER_FEATURES)),) # if version < 12 > +DEVELOPER_CFLAGS += -Wno-missing-braces > +endif > +else # not darwin > +ifeq ($(filter clang9,$(COMPILER_FEATURES)),) # if version < 9 > +DEVELOPER_CFLAGS += -Wno-missing-braces > +endif > +endif > +endif Looks very straight-forward, albeit a tad verbose, and simple to follow. I think this is equivalent to René's original one-liner. Will queue. Thanks.
Junio C Hamano <gitster@pobox.com> writes: > Looks very straight-forward, albeit a tad verbose, and simple to > follow. I think this is equivalent to René's original one-liner. > > Will queue. Thanks. Funny that during the whole time we were discussing this patch, I never recalled b53a5f24 (config.mak.dev: squelch -Wno-missing-braces for older gcc, 2022-07-29), which was a moral equivalent of this change for older GCC, until I needed to decide the name of the topic branch to queue this patch. I had the topic branch jk/struct-zero-init-with-older-gcc for b53a5f24 still lying around. I reused a part of its name and queued it on jh/struct-zero-init-with-older-clang branch.
diff --git a/config.mak.dev b/config.mak.dev index 4fa19d361b7..981304727c5 100644 --- a/config.mak.dev +++ b/config.mak.dev @@ -69,6 +69,31 @@ DEVELOPER_CFLAGS += -Wno-missing-braces endif endif +# Old versions of clang complain about initializaing a +# struct-within-a-struct using just "{0}" rather than "{{0}}". This +# error is considered a false-positive and not worth fixing, because +# new clang versions do not, so just disable it. +# +# The "bug" was fixed in upstream clang 9. +# +# Complicating this is that versions of clang released by Apple have +# their own version numbers (associated with the corresponding version +# of XCode) unrelated to the official clang version numbers. +# +# The bug was fixed in Apple clang 12. +# +ifneq ($(filter clang1,$(COMPILER_FEATURES)),) # if we are using clang +ifeq ($(uname_S),Darwin) # if we are on darwin +ifeq ($(filter clang12,$(COMPILER_FEATURES)),) # if version < 12 +DEVELOPER_CFLAGS += -Wno-missing-braces +endif +else # not darwin +ifeq ($(filter clang9,$(COMPILER_FEATURES)),) # if version < 9 +DEVELOPER_CFLAGS += -Wno-missing-braces +endif +endif +endif + # https://bugzilla.redhat.com/show_bug.cgi?id=2075786 ifneq ($(filter gcc12,$(COMPILER_FEATURES)),) DEVELOPER_CFLAGS += -Wno-error=stringop-overread