From: Jonathan Wakely Date: Tue, 10 Dec 2024 09:48:57 +0000 (+0000) Subject: libstdc++: Revert change to __bitwise_relocatable X-Git-Tag: basepoints/gcc-16~3480 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b9e1db1a14dbfc0b9a3cf9321fda4c041553b3a;p=thirdparty%2Fgcc.git libstdc++: Revert change to __bitwise_relocatable This reverts r15-6060-ge4a0157c2397c9 so that __is_bitwise_relocatable depends only on is_trivial. To avoid the deprecation warnings for C++26, use the __is_trivial built-in directly instead of std::is_trivial. We need to be sure that the type is trivially copyable, not just trivially constructible and trivially assignable. Otherwise we get -Wclass-memaccess diagnostics for e.g. std::vector>. We could add is_trivially_copyable to the conditions, but this isn't really an appropriate change for stage 3 anyway (it affects all modes from C++11 upwards). Just revert to using is_trivial, and we can revisit the condition for GCC 16. libstdc++-v3/ChangeLog: * include/bits/stl_uninitialized.h (__is_bitwise_relocatable): Revert to depending on is_trivial. --- diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h index 916288352d70..b7e65eb3ca06 100644 --- a/libstdc++-v3/include/bits/stl_uninitialized.h +++ b/libstdc++-v3/include/bits/stl_uninitialized.h @@ -1248,7 +1248,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Also known as is_trivially_relocatable. template struct __is_bitwise_relocatable - : __and_, is_trivially_destructible<_Tp>> { }; + : __bool_constant<__is_trivial(_Tp)> + { }; template