Skip to content

Commit c4781dc

Browse files
Villemoesnathanchance
authored andcommitted
Kbuild: enable -fms-extensions
Once in a while, it turns out that enabling -fms-extensions could allow some slightly prettier code. But every time it has come up, the code that had to be used instead has been deemed "not too awful" and not worth introducing another compiler flag for. That's probably true for each individual case, but then it's somewhat of a chicken/egg situation. If we just "bite the bullet" as Linus says and enable it once and for all, it is available whenever a use case turns up, and no individual case has to justify it. A lore.kernel.org search provides these examples: - https://lore.kernel.org/lkml/200706301813.58435.agruen@suse.de/ - https://lore.kernel.org/lkml/20180419152817.GD25406@bombadil.infradead.org/ - https://lore.kernel.org/lkml/170622208395.21664.2510213291504081000@noble.neil.brown.name/ - https://lore.kernel.org/lkml/87h6475w9q.fsf@prevas.dk/ - https://lore.kernel.org/lkml/CAHk-=wjeZwww6Zswn6F_iZTpUihTSNKYppLqj36iQDDhfntuEw@mail.gmail.com/ Undoubtedly, there are more places in the code where this could also be used but where -fms-extensions just didn't come up in any discussion. Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Acked-by: David Sterba <dsterba@suse.com> Link: https://patch.msgid.link/20251020142228.1819871-2-linux@rasmusvillemoes.dk [nathan: Move disabled clang warning to scripts/Makefile.extrawarn and adjust comment] Signed-off-by: Nathan Chancellor <nathan@kernel.org>
1 parent a6773e6 commit c4781dc

2 files changed

Lines changed: 6 additions & 1 deletion

File tree

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,6 +1061,9 @@ NOSTDINC_FLAGS += -nostdinc
10611061
# perform bounds checking.
10621062
KBUILD_CFLAGS += $(call cc-option, -fstrict-flex-arrays=3)
10631063

1064+
# Allow including a tagged struct or union anonymously in another struct/union.
1065+
KBUILD_CFLAGS += -fms-extensions
1066+
10641067
# disable invalid "can't wrap" optimizations for signed / pointers
10651068
KBUILD_CFLAGS += -fno-strict-overflow
10661069

scripts/Makefile.extrawarn

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@ endif
2828
KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds
2929

3030
ifdef CONFIG_CC_IS_CLANG
31-
# The kernel builds with '-std=gnu11' so use of GNU extensions is acceptable.
31+
# The kernel builds with '-std=gnu11' and '-fms-extensions' so use of GNU and
32+
# Microsoft extensions is acceptable.
3233
KBUILD_CFLAGS += -Wno-gnu
34+
KBUILD_CFLAGS += -Wno-microsoft-anon-tag
3335

3436
# Clang checks for overflow/truncation with '%p', while GCC does not:
3537
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111219

0 commit comments

Comments
 (0)