Author: Erich Keane Date: 2024-04-09T06:59:31-07:00 New Revision: 2875e2448c147d8a2335882819acdd4c8eb97ea6
URL: https://github.com/llvm/llvm-project/commit/2875e2448c147d8a2335882819acdd4c8eb97ea6 DIFF: https://github.com/llvm/llvm-project/commit/2875e2448c147d8a2335882819acdd4c8eb97ea6.diff LOG: Update __cpp_concepts macro (#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. Added: Modified: clang/docs/ReleaseNotes.rst clang/lib/Frontend/InitPreprocessor.cpp clang/test/Lexer/cxx-features.cpp clang/www/cxx_status.html Removed: ################################################################################ diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 5a39fe32f75850..9349cc788e5f72 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -110,6 +110,10 @@ C++20 Feature Support templates (`P1814R0 <https://wg21.link/p1814r0>`_). (#GH54051). +- We have sufficient confidence and experience with the concepts implementation + to update the ``__cpp_concepts`` macro to `202002L`. This enables + ``<expected>`` from libstdc++ to work correctly with 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