From ba9eaf59a8a3bb0713956da3bfb3492669971a62 Mon Sep 17 00:00:00 2001 From: Erich Keane Date: Mon, 15 May 2023 07:09:07 -0700 Subject: [PATCH] Update __cplusplus for C++23, add C++23 diag group alias. This came up during the C++26 flag discussion, so split this out into a separate patch. --- clang/include/clang/Basic/DiagnosticGroups.td | 1 + clang/lib/Frontend/InitPreprocessor.cpp | 3 +-- clang/test/Preprocessor/init.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td index 2ba42f9..1a792f1 100644 --- a/clang/include/clang/Basic/DiagnosticGroups.td +++ b/clang/include/clang/Basic/DiagnosticGroups.td @@ -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">; diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 0c4e73e..822109c 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -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"); diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index 9d27f12..661808e 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -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 @@ -139,7 +139,7 @@ // // 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 -- 2.7.4