From: Jonathan Wakely Date: Sat, 4 Feb 2023 00:04:55 +0000 (+0000) Subject: libstdc++: Fix testsuite warnings about new C++23 deprecations X-Git-Tag: basepoints/gcc-14~1491 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c76f55bf330e7cb823cb850aa2694b355038625f;p=thirdparty%2Fgcc.git libstdc++: Fix testsuite warnings about new C++23 deprecations With the recent change to deprecate std::aligned_storage and std::aligned_union we need to adjust some tests that now fail with -std=c++23. libstdc++-v3/ChangeLog: * include/std/type_traits: Add diagnostic pragmas around references to deprecated std::aligned_storage and std::aligned_union traits. * testsuite/20_util/aligned_storage/requirements/alias_decl.cc: Add dg-warning for et c++23. * testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/aligned_storage/value.cc: Likewise. * testsuite/20_util/aligned_union/1.cc: Likewise. * testsuite/20_util/aligned_union/requirements/alias_decl.cc: Likewise. --- diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index d13af433a17f..2bd607a8b8ff 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -2123,6 +2123,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; }; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + /** * @brief Provide aligned storage for types. * @@ -2155,6 +2158,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template const size_t aligned_union<_Len, _Types...>::alignment_value; +#pragma GCC diagnostic pop /// @cond undocumented @@ -2586,6 +2590,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { } _GLIBCXX17_DEPRECATED_SUGGEST("std::invoke_result"); #if __cplusplus >= 201402L +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" /// Alias template for aligned_storage template::__type)> @@ -2593,6 +2599,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template using aligned_union_t _GLIBCXX23_DEPRECATED = typename aligned_union<_Len, _Types...>::type; +#pragma GCC diagnostic pop /// Alias template for decay template diff --git a/libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc b/libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc index fc230b66a9d1..2e8e90efcd78 100644 --- a/libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc +++ b/libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc @@ -26,3 +26,6 @@ using namespace std; static_assert (is_same::type, aligned_storage_t<4>>(), "aligned_storage_t" ); + +// { dg-warning "deprecated" "" { target c++23 } 26 } +// { dg-warning "deprecated" "" { target c++23 } 27 } diff --git a/libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc index 36dfe04b083a..baec6667f306 100644 --- a/libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc +++ b/libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc @@ -29,3 +29,6 @@ namespace std template struct aligned_storage<1, alignment_of::value>; template struct aligned_storage<2>; } + +// { dg-warning "deprecated" "" { target c++23 } 29 } +// { dg-warning "deprecated" "" { target c++23 } 30 } diff --git a/libstdc++-v3/testsuite/20_util/aligned_storage/value.cc b/libstdc++-v3/testsuite/20_util/aligned_storage/value.cc index 16a5580a6b79..6e9df7ffc5d1 100644 --- a/libstdc++-v3/testsuite/20_util/aligned_storage/value.cc +++ b/libstdc++-v3/testsuite/20_util/aligned_storage/value.cc @@ -59,3 +59,5 @@ void test01() static_assert(sizeof(aligned_storage<5>::type) >= 5, ""); static_assert(__alignof__(aligned_storage<5>::type) == align_msa, ""); } + +// { dg-warning "deprecated" "" { target c++23 } 0 } diff --git a/libstdc++-v3/testsuite/20_util/aligned_union/1.cc b/libstdc++-v3/testsuite/20_util/aligned_union/1.cc index b779884dcc22..7501529cbf4f 100644 --- a/libstdc++-v3/testsuite/20_util/aligned_union/1.cc +++ b/libstdc++-v3/testsuite/20_util/aligned_union/1.cc @@ -64,6 +64,8 @@ void test01() static_assert(sizeof(au_type2::type) >= max_s+100, "Storage size (at least len)"); } +// { dg-warning "deprecated" "" { target c++23 } 57 } +// { dg-warning "deprecated" "" { target c++23 } 62 } int main() { diff --git a/libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc b/libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc index 6790d2aa828c..41f2b0881af5 100644 --- a/libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc +++ b/libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc @@ -26,3 +26,6 @@ using namespace std; static_assert (is_same::type, aligned_union_t<0, char, int>>(), "aligned_union_t" ); + +// { dg-warning "deprecated" "" { target c++23 } 26 } +// { dg-warning "deprecated" "" { target c++23 } 27 }