diff --git a/libstdc++-v3/testsuite/18_support/50594.cc b/libstdc++-v3/testsuite/18_support/50594.cc index a18e8278081..c15e704debe 100644 --- a/libstdc++-v3/testsuite/18_support/50594.cc +++ b/libstdc++-v3/testsuite/18_support/50594.cc @@ -1,5 +1,6 @@ // { dg-options "-fwhole-program" } // { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } +// { dg-require-effective-target std_allocator_new } // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } } // Copyright (C) 2011-2021 Free Software Foundation, Inc. diff --git a/libstdc++-v3/testsuite/20_util/allocator/1.cc b/libstdc++-v3/testsuite/20_util/allocator/1.cc index ebcd6c28c5f..79e223c13c2 100644 --- a/libstdc++-v3/testsuite/20_util/allocator/1.cc +++ b/libstdc++-v3/testsuite/20_util/allocator/1.cc @@ -17,6 +17,8 @@ // with this library; see the file COPYING3. If not see // . +// { dg-require-effective-target std_allocator_new } + // 20.4.1.1 allocator members #include @@ -35,7 +37,7 @@ struct gnu { }; bool check_new = false; bool check_delete = false; -void* +void* operator new(std::size_t n) THROW(std::bad_alloc) { check_new = true; @@ -59,9 +61,6 @@ void test01() { std::allocator obj; - // NB: These should work for various size allocation and - // deallocations. Currently, they only work as expected for sizes > - // _MAX_BYTES as defined in stl_alloc.h, which happes to be 128. gnu* pobj = obj.allocate(256); VERIFY( check_new ); diff --git a/libstdc++-v3/testsuite/20_util/allocator/overaligned.cc b/libstdc++-v3/testsuite/20_util/allocator/overaligned.cc index fd03d62b238..8c90fcc0e92 100644 --- a/libstdc++-v3/testsuite/20_util/allocator/overaligned.cc +++ b/libstdc++-v3/testsuite/20_util/allocator/overaligned.cc @@ -16,7 +16,7 @@ // . // { dg-options "-faligned-new" } -// { dg-do run { target c++11 } } +// { dg-do run { target { c++11 && { c++17 || std_allocator_new } } } } // { dg-require-cstdint "" } #include diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/96088.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/96088.cc index 83ca1c0afd6..27c499ed348 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_map/96088.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_map/96088.cc @@ -1,4 +1,5 @@ // { dg-do run { target c++17 } } +// { dg-require-effective-target std_allocator_new } // Copyright (C) 2021 Free Software Foundation, Inc. // diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/96088.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/96088.cc index de7f009dadc..eaadd08e7ca 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_multimap/96088.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/96088.cc @@ -1,4 +1,5 @@ // { dg-do run { target c++17 } } +// { dg-require-effective-target std_allocator_new } // Copyright (C) 2021 Free Software Foundation, Inc. // diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/96088.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/96088.cc index b9bbf63b863..aa137ec9302 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_multiset/96088.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/96088.cc @@ -1,4 +1,5 @@ // { dg-do run { target c++17 } } +// { dg-require-effective-target std_allocator_new } // Copyright (C) 2021 Free Software Foundation, Inc. // diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/96088.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/96088.cc index 83d5475c677..3f0835ce501 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_set/96088.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_set/96088.cc @@ -1,4 +1,5 @@ // { dg-do run { target c++17 } } +// { dg-require-effective-target std_allocator_new } // Copyright (C) 2021 Free Software Foundation, Inc. // diff --git a/libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc b/libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc index f5bc652c9dc..10e5c69edca 100644 --- a/libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc +++ b/libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc @@ -18,6 +18,7 @@ // { dg-require-time "" } // { dg-require-cstdint "" } +// { dg-require-effective-target std_allocator_new } #include #include diff --git a/libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc b/libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc index a4e3874d841..4e2a7250e32 100644 --- a/libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc +++ b/libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc @@ -18,6 +18,7 @@ // { dg-require-time "" } // { dg-require-cstdint "" } +// { dg-require-effective-target std_allocator_new } #include #include diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index 35ccbe47c39..4f4c78bed24 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -1338,6 +1338,14 @@ proc check_effective_target_net_ts_ip { } { }] } +# Return 1 if libstdc++ was built as --enable-libstdcxx-allocator=new +proc check_effective_target_std_allocator_new { } { + return [check_v3_target_prop_cached et_std_alloc_new { + set cond "_GLIBCXX_USE_ALLOCATOR_NEW" + return [v3_check_preprocessor_condition std_alloc_new $cond] + }] +} + set additional_prunes "" if { [info exists env(GCC_RUNTEST_PARALLELIZE_DIR)] \