[clang] 267ab1c - [clang] Add test for CWG190 "Layout-compatible POD-struct types" (#121668)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Jan 4 22:29:35 PST 2025
Author: Vlad Serebrennikov
Date: 2025-01-05T10:29:31+04:00
New Revision: 267ab1cf574bd51d67f3f88c1c4f28a44fca2c8a
URL: https://github.com/llvm/llvm-project/commit/267ab1cf574bd51d67f3f88c1c4f28a44fca2c8a
DIFF: https://github.com/llvm/llvm-project/commit/267ab1cf574bd51d67f3f88c1c4f28a44fca2c8a.diff
LOG: [clang] Add test for CWG190 "Layout-compatible POD-struct types" (#121668)
This patch adds test for
[CWG190](https://cplusplus.github.io/CWG/issues/190.html), leveraging
`__is_layout_compatible` intrinsic added for C++20
`std::is_layout_compatible`. I conservatively set the status to Clang
19, as it's the first release that implemented said intrinsic.
Added:
Modified:
clang/test/CXX/drs/cwg1xx.cpp
clang/www/cxx_dr_status.html
Removed:
################################################################################
diff --git a/clang/test/CXX/drs/cwg1xx.cpp b/clang/test/CXX/drs/cwg1xx.cpp
index 6aec8b65c91f12..939de6dee06d38 100644
--- a/clang/test/CXX/drs/cwg1xx.cpp
+++ b/clang/test/CXX/drs/cwg1xx.cpp
@@ -1314,8 +1314,25 @@ namespace cwg188 { // cwg188: yes
static_assert(sizeof(0, c) == 10, "");
}
-// cwg190 FIXME: add codegen test for tbaa
-// or implement C++20 std::is_layout_compatible and test it this way
+namespace cwg190 { // cwg190: 19
+struct A {
+ int a;
+ static double x;
+ int b;
+ void y();
+ int c;
+};
+
+struct B {
+ int a;
+ void y();
+ int b;
+ static double x;
+ int c;
+};
+
+static_assert(__is_layout_compatible(A, B), "");
+} // namespace cwg190
int cwg191_j;
namespace cwg191 { // cwg191: yes
diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html
index 6f42d10e4c187c..335442c6e605f8 100755
--- a/clang/www/cxx_dr_status.html
+++ b/clang/www/cxx_dr_status.html
@@ -1185,7 +1185,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/190.html">190</a></td>
<td>TC1</td>
<td>Layout-compatible POD-struct types</td>
- <td class="unknown" align="center">Unknown</td>
+ <td class="full" align="center">Clang 19</td>
</tr>
<tr id="191">
<td><a href="https://cplusplus.github.io/CWG/issues/191.html">191</a></td>
More information about the cfe-commits
mailing list