[libcxx-commits] [libcxx] [libc++] Fix disabling of extension warnings in C++20 and later (PR #134989)
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Apr 9 03:41:58 PDT 2025
https://github.com/philnik777 created https://github.com/llvm/llvm-project/pull/134989
`__has_feature(modules)` is always true in C++20 and later. Instead of using that, just disable extension warnings if they're not ignored through the system header machinery anyways.
>From 184dbc0330101498ddfc0ef62ef2747922abc97e Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Wed, 9 Apr 2025 12:40:18 +0200
Subject: [PATCH] [libc++] Fix disabling of extension warnings in C++20 and
later
---
libcxx/include/__config | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libcxx/include/__config b/libcxx/include/__config
index 084e1d4402e6c..05ae32f01e865 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -543,9 +543,9 @@ typedef __char32_t char32_t;
# endif
// Clang modules take a significant compile time hit when pushing and popping diagnostics.
-// Since all the headers are marked as system headers in the modulemap, we can simply disable this
-// pushing and popping when building with clang modules.
-# if !__has_feature(modules)
+// Since all the headers are marked as system headers unless _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER is defined, we can
+// simply disable this pushing and popping when _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER isn't defined.
+# ifdef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
# define _LIBCPP_PUSH_EXTENSION_DIAGNOSTICS \
_LIBCPP_DIAGNOSTIC_PUSH \
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++11-extensions") \
More information about the libcxx-commits
mailing list