[clang] Update __cpp_concepts macro (PR #87998)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 8 07:30:13 PDT 2024
https://github.com/erichkeane created https://github.com/llvm/llvm-project/pull/87998
After discussion with a few others, and seeing the state of our concepts support, I believe it is worth trying to see if we can update this for Clang19. The forcing function is that libstdc++'s <expected> header is guarded by this macro, so we need to update it to support that.
>From 477ca3032a26467dfb67ef5d2f9b54bb2f958a33 Mon Sep 17 00:00:00 2001
From: erichkeane <ekeane at nvidia.com>
Date: Mon, 8 Apr 2024 07:28:50 -0700
Subject: [PATCH] Update __cpp_concepts macro
After discussion with a few others, and seeing the state of our concepts
support, I believe it is worth trying to see if we can update this for
Clang19. The forcing function is that libstdc++'s <expected> header is
guarded by this macro, so we need to update it to support that.
---
clang/docs/ReleaseNotes.rst | 5 +++++
clang/lib/Frontend/InitPreprocessor.cpp | 5 +----
clang/test/Lexer/cxx-features.cpp | 2 +-
clang/www/cxx_status.html | 12 ++----------
4 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 28e8ddb3c41c3e..4f02459ca1f09f 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -110,6 +110,11 @@ C++20 Feature Support
templates (`P1814R0 <https://wg21.link/p1814r0>`_).
(#GH54051).
+- __cpp_concepts macro now updated to `202002L`, as we are confident that,
+ modulo a handful of bugs and core issues, that our concepts implementation is
+ sufficient. This should enable libstdc++'s `<expected>` to work correctly in
+ clang.
+
C++23 Feature Support
^^^^^^^^^^^^^^^^^^^^^
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index 48ad92063bd461..84069e96f41464 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -720,10 +720,7 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,
if (LangOpts.CPlusPlus20) {
Builder.defineMacro("__cpp_aggregate_paren_init", "201902L");
- // P0848 is implemented, but we're still waiting for other concepts
- // issues to be addressed before bumping __cpp_concepts up to 202002L.
- // Refer to the discussion of this at https://reviews.llvm.org/D128619.
- Builder.defineMacro("__cpp_concepts", "201907L");
+ Builder.defineMacro("__cpp_concepts", "202002");
Builder.defineMacro("__cpp_conditional_explicit", "201806L");
Builder.defineMacro("__cpp_consteval", "202211L");
Builder.defineMacro("__cpp_constexpr_dynamic_alloc", "201907L");
diff --git a/clang/test/Lexer/cxx-features.cpp b/clang/test/Lexer/cxx-features.cpp
index 9496746c6fd663..1de32498cd345b 100644
--- a/clang/test/Lexer/cxx-features.cpp
+++ b/clang/test/Lexer/cxx-features.cpp
@@ -85,7 +85,7 @@
#error "wrong value for __cpp_char8_t"
#endif
-#if check(concepts, 0, 0, 0, 0, 201907, 201907, 201907)
+#if check(concepts, 0, 0, 0, 0, 202002, 202002, 202002)
#error "wrong value for __cpp_concepts"
#endif
diff --git a/clang/www/cxx_status.html b/clang/www/cxx_status.html
index c1d95dadbb27e2..130148c7420fa1 100755
--- a/clang/www/cxx_status.html
+++ b/clang/www/cxx_status.html
@@ -544,16 +544,8 @@ <h2 id="cxx20">C++20 implementation status</h2>
</tr>
<tr> <!-- from Cologne -->
<td><a href="https://wg21.link/p0848r3">P0848R3</a></td>
- <td rowspan="1" class="partial" align="center">
- <details>
- <summary>Clang 16 (Partial)</summary>
- Because of other concepts implementation deficits, the __cpp_concepts macro is not yet set to 202002L.
- Also, the related defect reports <a href="https://wg21.link/cwg1496">DR1496</a> and
- <a href="https://wg21.link/cwg1734">DR1734</a> are not yet implemented. Accordingly, deleted
- special member functions are treated as eligible even though they shouldn't be.
- </details>
- </td>
- </tr>
+ <td rowspan="1" class="full" align="center">Clang 19</td>
+ </tr>
<tr>
<td><a href="https://wg21.link/p1616r1">P1616R1</a></td>
<td rowspan="2" class="full" align="center">Clang 10</td>
More information about the cfe-commits
mailing list