Update __cplusplus for C++23, add C++23 diag group alias.
authorErich Keane <erich.keane@intel.com>
Mon, 15 May 2023 14:09:07 +0000 (07:09 -0700)
committerErich Keane <erich.keane@intel.com>
Mon, 15 May 2023 14:48:52 +0000 (07:48 -0700)
This came up during the C++26 flag discussion, so split this out into a
separate patch.

clang/include/clang/Basic/DiagnosticGroups.td
clang/lib/Frontend/InitPreprocessor.cpp
clang/test/Preprocessor/init.c

index 2ba42f9..1a792f1 100644 (file)
@@ -1116,6 +1116,7 @@ def : DiagGroup<"c++0x-extensions", [CXX11]>;
 def : DiagGroup<"c++1y-extensions", [CXX14]>;
 def : DiagGroup<"c++1z-extensions", [CXX17]>;
 def : DiagGroup<"c++2a-extensions", [CXX20]>;
+def : DiagGroup<"c++2b-extensions", [CXX23]>;
 
 def DelegatingCtorCycles :
   DiagGroup<"delegating-ctor-cycles">;
index 0c4e73e..822109c 100644 (file)
@@ -451,9 +451,8 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI,
       Builder.defineMacro("__STDC_VERSION__", "199409L");
   } else {
     //   -- __cplusplus
-    // FIXME: Use correct value for C++23.
     if (LangOpts.CPlusPlus23)
-      Builder.defineMacro("__cplusplus", "202101L");
+      Builder.defineMacro("__cplusplus", "202302L");
     //      [C++20] The integer literal 202002L.
     else if (LangOpts.CPlusPlus20)
       Builder.defineMacro("__cplusplus", "202002L");
index 9d27f12..661808e 100644 (file)
@@ -16,7 +16,7 @@
 // CXX2B:#define __GXX_EXPERIMENTAL_CXX0X__ 1
 // CXX2B:#define __GXX_RTTI 1
 // CXX2B:#define __GXX_WEAK__ 1
-// CXX2B:#define __cplusplus 202101L
+// CXX2B:#define __cplusplus 202302L
 // CXX2B:#define __private_extern__ extern
 //
 // RUN: %clang_cc1 -x c++ -fgnuc-version=4.2.1 -std=c++20 -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix CXX2A %s
 //
 // GXX2B:#define __GNUG__ 4
 // GXX2B:#define __GXX_WEAK__ 1
-// GXX2B:#define __cplusplus 202101L
+// GXX2B:#define __cplusplus 202302L
 // GXX2B:#define __private_extern__ extern
 //
 // RUN: %clang_cc1 -x c++ -fgnuc-version=4.2.1 -std=gnu++20 -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix GXX2A %s