Re: [PATCH 0/2] Fix syntax errors under clang 11.0.0 on MacOS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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@xxxxxx/

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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux