https://gcc.gnu.org/g:2ae6b772dc5ebd2ce209f613828288a99447659a

commit r17-757-g2ae6b772dc5ebd2ce209f613828288a99447659a
Author: Tomasz KamiƄski <[email protected]>
Date:   Mon May 25 16:30:46 2026 +0200

    libstdc++: Fix some test failures due trivial unions (P3074R7) change.
    
    The corresponding types are now trivially destructible, per changes
    from P3074R7, see PR119059.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/20_util/is_constructible/value-2.cc:
            Adjust expected value for C++26 (__cpp_trivial_union >= 202502L).
            * testsuite/20_util/is_destructible/value.cc: Likewise.
            * testsuite/20_util/is_nothrow_destructible/value.cc: Likewise.

Diff:
---
 libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc      | 4 ++++
 libstdc++-v3/testsuite/20_util/is_destructible/value.cc         | 4 ++++
 libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc | 5 +++++
 3 files changed, 13 insertions(+)

diff --git a/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc 
b/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
index d8c2f680d6dc..aabadc5c13d9 100644
--- a/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
+++ b/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
@@ -715,7 +715,11 @@ static_assert(!std::is_constructible<const DelnAny, Empty, 
B, D>::value,
              "Error");
 
 // Deleted members in unions with non-trivial members:
+#if __cpp_trivial_union >= 202502L
+static_assert(std::is_constructible<NontrivialUnion>::value, "Error");
+#else
 static_assert(!std::is_constructible<NontrivialUnion>::value, "Error");
+#endif
 static_assert(!std::is_constructible<NontrivialUnion,
              const NontrivialUnion&>::value, "Error");
 
diff --git a/libstdc++-v3/testsuite/20_util/is_destructible/value.cc 
b/libstdc++-v3/testsuite/20_util/is_destructible/value.cc
index d6ce6949b9a2..e3c8481b0f8e 100644
--- a/libstdc++-v3/testsuite/20_util/is_destructible/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_destructible/value.cc
@@ -99,7 +99,11 @@ static_assert(!std::is_destructible<Del[]>::value, "Error");
 static_assert(!std::is_destructible<const Del[]>::value, "Error");
 
 // Deleted members in unions with non-trivial members:
+#if __cpp_trivial_union >= 202502L
+static_assert(std::is_destructible<NontrivialUnion>::value, "Error");
+#else
 static_assert(!std::is_destructible<NontrivialUnion>::value, "Error");
+#endif
 
 // Unusual copy:
 static_assert(std::is_destructible<UnusualCopy>::value, "Error");
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc 
b/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
index 71860099dbd3..5565d8111bbd 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
@@ -96,8 +96,13 @@ static_assert(!std::is_nothrow_destructible<TD2>::value, 
"Error");
 static_assert(!std::is_nothrow_destructible<Aggr2>::value, "Error");
 static_assert(!std::is_nothrow_destructible<Aggr2[1]>::value, "Error");
 static_assert(!std::is_nothrow_destructible<TD1[1][2]>::value, "Error");
+#if __cpp_trivial_union >= 202502L
+static_assert(std::is_nothrow_destructible<Ut>::value, "Error");
+static_assert(std::is_nothrow_destructible<Ut[3]>::value, "Error");
+#else
 static_assert(!std::is_nothrow_destructible<Ut>::value, "Error");
 static_assert(!std::is_nothrow_destructible<Ut[3]>::value, "Error");
+#endif
 static_assert(!std::is_nothrow_destructible<AbstractDelDtor>::value, "Error");
 static_assert(!std::is_nothrow_destructible<Abstract2>::value, "Error");
 static_assert(!std::is_nothrow_destructible<Abstract3>::value, "Error");

Reply via email to