[C++20] Claim full support for consteval again

After resolving several outstanding issues now is the time to mark it as
fully supported.

Fixes https://github.com/llvm/llvm-project/issues/57094

Reviewed By: aaron.ballman, cor3ntin, #clang-language-wg

Differential Revision: https://reviews.llvm.org/D147717
This commit is contained in:
Mariya Podchishchaeva 2023-06-13 03:50:10 -04:00
parent d209084720
commit bba6ea8c2d
4 changed files with 4 additions and 11 deletions

View File

@ -111,6 +111,7 @@ C++20 Feature Support
SFINAE.
- Clang now supports `requires cplusplus20` for module maps.
- Implemented missing parts of `P2002R1: Consistent comparison operators <https://wg21.link/P2002R1>`_
- Clang now defines `__cpp_consteval` macro.
C++23 Feature Support
^^^^^^^^^^^^^^^^^^^^^

View File

@ -683,7 +683,7 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,
// Refer to the discussion of this at https://reviews.llvm.org/D128619.
Builder.defineMacro("__cpp_concepts", "201907L");
Builder.defineMacro("__cpp_conditional_explicit", "201806L");
// Builder.defineMacro("__cpp_consteval", "202211L");
Builder.defineMacro("__cpp_consteval", "202211L");
Builder.defineMacro("__cpp_constexpr_dynamic_alloc", "201907L");
Builder.defineMacro("__cpp_constinit", "201907L");
Builder.defineMacro("__cpp_impl_coroutine", "201902L");

View File

@ -78,8 +78,7 @@
#error "wrong value for __cpp_conditional_explicit"
#endif
#if check(consteval, 0, 0, 0, 0, 0, 0)
// FIXME: 201811 in C++20
#if check(consteval, 0, 0, 0, 0, 202211, 202211)
#error "wrong value for __cpp_consteval"
#endif

View File

@ -643,14 +643,7 @@ C++23, informally referred to as C++26.</p>
<tr>
<td rowspan=2>Immediate functions (<tt>consteval</tt>)</td>
<td><a href="https://wg21.link/p1073r3">P1073R3</a></td>
<td class="partial" align="center">
<details><summary>Clang 15 (Partial)</summary>
Clang still incorrectly defers some consteval executions to runtime,
resulting in CodeGen crashes. Additionally, Clang does not properly
handle default arguments in consteval functions under all
circumstances.
</details>
</td>
<td class="full" align="center">Clang 17</td>
</tr>
<tr> <!-- from Prague -->
<td><a href="https://wg21.link/p1937r2">P1937R2</a></td>