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 <eke...@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> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits