https://github.com/frederick-vs-ja updated 
https://github.com/llvm/llvm-project/pull/127166

>From a2fc3d0550ab22e1a4273dc2debfda23df7cad6f Mon Sep 17 00:00:00 2001
From: "A. Jiang" <d...@live.cn>
Date: Fri, 14 Feb 2025 14:03:23 +0800
Subject: [PATCH 1/4] [clang][docs] Fix DR staus for P2280R4

P2280R4 is officially a defect report. Although Clang 20 only implementated it
for C++23 and later. I think we should mention that it is a DR but not 
backported yet.
---
 clang/www/cxx_status.html | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/clang/www/cxx_status.html b/clang/www/cxx_status.html
index 0fc3b1d314698..70490b2e4331f 100755
--- a/clang/www/cxx_status.html
+++ b/clang/www/cxx_status.html
@@ -439,8 +439,8 @@ <h2 id="cxx23">C++23 implementation status</h2>
     </tr>
     <tr>
       <td>Using unknown pointers and references in constant expressions</td>
-      <td><a href="https://wg21.link/P2280R4";>P2280R4</a></td>
-      <td class="unreleased" align="center">Clang 20</td>
+      <td><a href="https://wg21.link/P2280R4";>P2280R4</a> (<a 
href="#dr">DR</a>)</td>
+      <td class="unreleased" align="center">Clang 20 <a 
href="#p2280">(12)</a></td>
     </tr>
     <tr>
       <td>static <code>operator()</code></td>
@@ -510,6 +510,12 @@ <h2 id="cxx23">C++23 implementation status</h2>
       <td class="full" align="center">Yes</td>
     </tr>
 </table>
+
+<p>
+<span id="p2280">(12): In Clang 20, this change is not yet retroactively
+applied to pre-C++23 modes.
+</span>
+</p>
 </details>
 
 

>From cc9eac55a7a9fc6faf4f7d2eb623710ac1afbe43 Mon Sep 17 00:00:00 2001
From: "A. Jiang" <d...@live.cn>
Date: Fri, 14 Feb 2025 18:37:16 +0800
Subject: [PATCH 2/4] Adopt @Endilll's suggestion

Co-authored-by: Vlad Serebrennikov <serebrennikov.vladis...@gmail.com>
---
 clang/www/cxx_status.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/www/cxx_status.html b/clang/www/cxx_status.html
index 70490b2e4331f..0ac625d547935 100755
--- a/clang/www/cxx_status.html
+++ b/clang/www/cxx_status.html
@@ -512,7 +512,7 @@ <h2 id="cxx23">C++23 implementation status</h2>
 </table>
 
 <p>
-<span id="p2280">(12): In Clang 20, this change is not yet retroactively
+<span id="p2280">(12): This feature is not yet available in C++20 and earlier 
modes.
 applied to pre-C++23 modes.
 </span>
 </p>

>From 8ae351b5c70ca8279b44963727b0e741ca83d0cb Mon Sep 17 00:00:00 2001
From: "A. Jiang" <d...@live.cn>
Date: Tue, 4 Mar 2025 20:09:35 +0800
Subject: [PATCH 3/4] Fix bad application of suggestion

---
 clang/www/cxx_status.html | 1 -
 1 file changed, 1 deletion(-)

diff --git a/clang/www/cxx_status.html b/clang/www/cxx_status.html
index eb6eacc58caf5..4b1718f51391a 100755
--- a/clang/www/cxx_status.html
+++ b/clang/www/cxx_status.html
@@ -549,7 +549,6 @@ <h2 id="cxx23">C++23 implementation status</h2>
 
 <p>
 <span id="p2280">(12): This feature is not yet available in C++20 and earlier 
modes.
-applied to pre-C++23 modes.
 </span>
 </p>
 </details>

>From 20adf1b4ad4fef1dd2a3d445a31691294604db02 Mon Sep 17 00:00:00 2001
From: "A. Jiang" <d...@live.cn>
Date: Fri, 14 Mar 2025 21:57:07 +0800
Subject: [PATCH 4/4] Add FIXME comments

---
 clang/test/SemaCXX/constant-expression-cxx11.cpp   | 4 ++--
 clang/test/SemaCXX/constant-expression-p2280r4.cpp | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/clang/test/SemaCXX/constant-expression-cxx11.cpp 
b/clang/test/SemaCXX/constant-expression-cxx11.cpp
index c35f3a5632a05..df789a999c0b6 100644
--- a/clang/test/SemaCXX/constant-expression-cxx11.cpp
+++ b/clang/test/SemaCXX/constant-expression-cxx11.cpp
@@ -2005,7 +2005,7 @@ namespace ConstexprConstructorRecovery {
   constexpr X x{}; // cxx11-error {{constant expression}} cxx11-note {{not 
initialized}}
 }
 
-namespace Lifetime {
+namespace Lifetime { // FIXME: Fix the error messages quality regression 
introduced by GH95474.
   void f() {
     constexpr int &n = n; // expected-error {{constant expression}} cxx23-note 
{{reference to 'n' is not a constant expression}} cxx23-note {{address of 
non-static constexpr variable 'n' may differ}} expected-warning {{not yet bound 
to a value}}
                           // cxx11_20-note@-1 {{use of reference outside its 
lifetime is not allowed in a constant expression}}
@@ -2421,7 +2421,7 @@ namespace PR41854 {
   unsigned b = d.c;
 }
 
-namespace array_size {
+namespace array_size { // FIXME: P2280R4 should be backported, and these cases 
should be accepted in C++11 and later.
   template<int N> struct array {
     static constexpr int size() { return N; }
   };
diff --git a/clang/test/SemaCXX/constant-expression-p2280r4.cpp 
b/clang/test/SemaCXX/constant-expression-p2280r4.cpp
index f22430a0e88a2..c88e625b8bb33 100644
--- a/clang/test/SemaCXX/constant-expression-p2280r4.cpp
+++ b/clang/test/SemaCXX/constant-expression-p2280r4.cpp
@@ -1,6 +1,8 @@
 // RUN: %clang_cc1 -std=c++23 -verify=expected,nointerpreter %s
 // RUN: %clang_cc1 -std=c++23 -verify %s 
-fexperimental-new-constant-interpreter
 
+// FIXME: P2280R4 should be backported. Run this in C++11 and later modes.
+
 using size_t = decltype(sizeof(0));
 
 namespace std {

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to