https://github.com/Endilll updated https://github.com/llvm/llvm-project/pull/94876
>From e4028ec6e70f6d86325393a8d03e407404643bc0 Mon Sep 17 00:00:00 2001 From: Vlad Serebrennikov <serebrennikov.vladis...@gmail.com> Date: Sun, 9 Jun 2024 00:59:09 +0300 Subject: [PATCH 1/3] [clang] Cover CWG issues about `export template` --- clang/test/CXX/drs/cwg2xx.cpp | 2 +- clang/test/CXX/drs/cwg3xx.cpp | 4 ++-- clang/test/CXX/drs/cwg8xx.cpp | 7 +++++++ clang/www/cxx_dr_status.html | 20 ++++++++++++++++---- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/clang/test/CXX/drs/cwg2xx.cpp b/clang/test/CXX/drs/cwg2xx.cpp index 99916dea9a912..926cb19596026 100644 --- a/clang/test/CXX/drs/cwg2xx.cpp +++ b/clang/test/CXX/drs/cwg2xx.cpp @@ -41,7 +41,7 @@ namespace cwg202 { // cwg202: 3.1 template struct X<f>; } -// FIXME (export) cwg204: no +// cwg204: sup 820 namespace cwg206 { // cwg206: yes struct S; // #cwg206-S diff --git a/clang/test/CXX/drs/cwg3xx.cpp b/clang/test/CXX/drs/cwg3xx.cpp index 94227dc031c6a..a10ed95941ba4 100644 --- a/clang/test/CXX/drs/cwg3xx.cpp +++ b/clang/test/CXX/drs/cwg3xx.cpp @@ -377,7 +377,7 @@ namespace cwg322 { // cwg322: 2.8 int &s = a; } -// cwg323: no +// cwg323: sup 820 namespace cwg324 { // cwg324: 3.6 struct S { int n : 1; } s; // #cwg324-n @@ -587,7 +587,7 @@ namespace cwg334 { // cwg334: yes template void f<S>(); } -// cwg335: no +// cwg335: sup 820 namespace cwg336 { // cwg336: yes namespace Pre { diff --git a/clang/test/CXX/drs/cwg8xx.cpp b/clang/test/CXX/drs/cwg8xx.cpp index eba601300584d..28fa8083d8e6a 100644 --- a/clang/test/CXX/drs/cwg8xx.cpp +++ b/clang/test/CXX/drs/cwg8xx.cpp @@ -10,6 +10,13 @@ // expected-no-diagnostics #endif +namespace cwg820 { // cwg820: 2.7 +export template <class T> struct B {}; +// expected-warning@-1 {{exported templates are unsupported}} +export template<typename T> void f() {} +// expected-warning@-1 {{exported templates are unsupported}} +} + namespace cwg873 { // cwg873: 3.0 #if __cplusplus >= 201103L template <typename T> void f(T &&); diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html index 43857447d83b1..3fdf6bae0a3d5 100755 --- a/clang/www/cxx_dr_status.html +++ b/clang/www/cxx_dr_status.html @@ -1262,7 +1262,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2> <td><a href="https://cplusplus.github.io/CWG/issues/204.html">204</a></td> <td>CD1</td> <td>Exported class templates</td> - <td class="none" align="center">No</td> + <td class="full" align="center">Superseded by <a href="#820">820</a></td> </tr> <tr class="open" id="205"> <td><a href="https://cplusplus.github.io/CWG/issues/205.html">205</a></td> @@ -1978,7 +1978,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2> <td><a href="https://cplusplus.github.io/CWG/issues/323.html">323</a></td> <td>CD1</td> <td>Where must <TT>export</TT> appear?</td> - <td class="none" align="center">No</td> + <td class="full" align="center">Superseded by <a href="#820">820</a></td> </tr> <tr id="324"> <td><a href="https://cplusplus.github.io/CWG/issues/324.html">324</a></td> @@ -2050,7 +2050,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2> <td><a href="https://cplusplus.github.io/CWG/issues/335.html">335</a></td> <td>CD1</td> <td>Allowing <TT>export</TT> on template members of nontemplate classes</td> - <td class="none" align="center">No</td> + <td class="full" align="center">Superseded by <a href="#820">820</a></td> </tr> <tr id="336"> <td><a href="https://cplusplus.github.io/CWG/issues/336.html">336</a></td> @@ -4914,7 +4914,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2> <td><a href="https://cplusplus.github.io/CWG/issues/820.html">820</a></td> <td>CD2</td> <td>Deprecation of <TT>export</TT></td> - <td class="unknown" align="center">Unknown</td> + <td class="full" align="center">Clang 2.7</td> </tr> <tr id="822"> <td><a href="https://cplusplus.github.io/CWG/issues/822.html">822</a></td> @@ -17186,6 +17186,18 @@ <h2 id="cxxdr">C++ defect report implementation status</h2> <td>open</td> <td>Template argument deduction involving exception specifications</td> <td align="center">Not resolved</td> + </tr> + <tr class="open" id="2897"> + <td><a href="https://cplusplus.github.io/CWG/issues/2897.html">2897</a></td> + <td>open</td> + <td>Copying potentially-overlapping union subobjects</td> + <td align="center">Not resolved</td> + </tr> + <tr class="open" id="2898"> + <td><a href="https://cplusplus.github.io/CWG/issues/2898.html">2898</a></td> + <td>open</td> + <td>Clarify implicit conversion sequence from <I>cv</I> <TT>T</TT> to <TT>T</TT></td> + <td align="center">Not resolved</td> </tr></table> </div> >From bce3e35289aa977e828f6cd76c05e594ff32596b Mon Sep 17 00:00:00 2001 From: Vlad Serebrennikov <serebrennikov.vladis...@gmail.com> Date: Sun, 9 Jun 2024 01:31:36 +0300 Subject: [PATCH 2/3] Add directives for C++20 --- clang/test/CXX/drs/cwg8xx.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/clang/test/CXX/drs/cwg8xx.cpp b/clang/test/CXX/drs/cwg8xx.cpp index 28fa8083d8e6a..c8cbdfcee3f4d 100644 --- a/clang/test/CXX/drs/cwg8xx.cpp +++ b/clang/test/CXX/drs/cwg8xx.cpp @@ -1,20 +1,18 @@ -// RUN: %clang_cc1 -std=c++98 -triple x86_64-unknown-unknown %s -verify=expected -fexceptions -fcxx-exceptions -pedantic-errors -// RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-unknown %s -verify=expected,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors -// RUN: %clang_cc1 -std=c++14 -triple x86_64-unknown-unknown %s -verify=expected,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors -// RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-unknown %s -verify=expected,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors -// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-unknown %s -verify=expected,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors -// RUN: %clang_cc1 -std=c++23 -triple x86_64-unknown-unknown %s -verify=expected,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors -// RUN: %clang_cc1 -std=c++2c -triple x86_64-unknown-unknown %s -verify=expected,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors - -#if __cplusplus == 199711L -// expected-no-diagnostics -#endif +// RUN: %clang_cc1 -std=c++98 -triple x86_64-unknown-unknown %s -verify=expected,cxx98-17 -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-unknown %s -verify=expected,cxx98-17,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++14 -triple x86_64-unknown-unknown %s -verify=expected,cxx98-17,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-unknown %s -verify=expected,cxx98-17,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-unknown %s -verify=expected,since-cxx20,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++23 -triple x86_64-unknown-unknown %s -verify=expected,since-cxx20,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++2c -triple x86_64-unknown-unknown %s -verify=expected,since-cxx20,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors namespace cwg820 { // cwg820: 2.7 export template <class T> struct B {}; -// expected-warning@-1 {{exported templates are unsupported}} +// cxx98-17-warning@-1 {{exported templates are unsupported}} +// since-cxx20-error@-2 {{export declaration can only be used within a module purview}} export template<typename T> void f() {} -// expected-warning@-1 {{exported templates are unsupported}} +// cxx98-17-warning@-1 {{exported templates are unsupported}} +// since-cxx20-error@-2 {{export declaration can only be used within a module purview}} } namespace cwg873 { // cwg873: 3.0 >From 2108825b801115c462a45ffd9c523915e6ec4f57 Mon Sep 17 00:00:00 2001 From: Vlad Serebrennikov <serebrennikov.vladis...@gmail.com> Date: Thu, 20 Jun 2024 15:00:57 +0300 Subject: [PATCH 3/3] Use the new colors for superseded CWG issues --- clang/www/cxx_dr_status.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html index 8ff825006f2b5..1b523cf12854c 100755 --- a/clang/www/cxx_dr_status.html +++ b/clang/www/cxx_dr_status.html @@ -1269,7 +1269,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2> <td><a href="https://cplusplus.github.io/CWG/issues/204.html">204</a></td> <td>CD1</td> <td>Exported class templates</td> - <td class="full" align="center">Superseded by <a href="#820">820</a></td> + <td class="full-superseded" align="center">Superseded by <a href="#820">820</a></td> </tr> <tr class="open" id="205"> <td><a href="https://cplusplus.github.io/CWG/issues/205.html">205</a></td> @@ -1985,7 +1985,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2> <td><a href="https://cplusplus.github.io/CWG/issues/323.html">323</a></td> <td>CD1</td> <td>Where must <TT>export</TT> appear?</td> - <td class="full" align="center">Superseded by <a href="#820">820</a></td> + <td class="full-superseded" align="center">Superseded by <a href="#820">820</a></td> </tr> <tr id="324"> <td><a href="https://cplusplus.github.io/CWG/issues/324.html">324</a></td> @@ -2057,7 +2057,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2> <td><a href="https://cplusplus.github.io/CWG/issues/335.html">335</a></td> <td>CD1</td> <td>Allowing <TT>export</TT> on template members of nontemplate classes</td> - <td class="full" align="center">Superseded by <a href="#820">820</a></td> + <td class="full-superseded" align="center">Superseded by <a href="#820">820</a></td> </tr> <tr id="336"> <td><a href="https://cplusplus.github.io/CWG/issues/336.html">336</a></td> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits