[committed] libstdc++: Fix some AIX test failures
Checks
Commit Message
Tested x86_64-linux and powerpc-aix. Pushed to trunk.
-- >8 --
AIX <sys/thread.h> defines struct tstate with non-reserved names, so
adjust the 17_intro/names.cc test. It also defines struct user, which
conflicts with namespace user in some tests.
Replacing the global operator new doesn't work on AIX the same way as it
does for ELF, so skip some tests that depend on replacing it.
Add missing DG directives to synchronized_value test so it doesn't run
for the single-threaded AIX multilib.
libstdc++-v3/ChangeLog:
* testsuite/17_intro/names.cc [_AIX]: Do not define policy.
* testsuite/19_diagnostics/error_code/cons/lwg3629.cc: Rename
namespace to avoid clashing with libc struct.
* testsuite/19_diagnostics/error_condition/cons/lwg3629.cc:
Likewise.
* testsuite/23_containers/unordered_map/96088.cc: Skip on AIX.
* testsuite/23_containers/unordered_multimap/96088.cc: Likewise.
* testsuite/23_containers/unordered_multiset/96088.cc: Likewise.
* testsuite/23_containers/unordered_set/96088.cc: Likewise.
* testsuite/experimental/synchronized_value.cc: Require gthreads
and add missing option for pthreads targets.
---
libstdc++-v3/testsuite/17_intro/names.cc | 2 ++
.../19_diagnostics/error_code/cons/lwg3629.cc | 18 +++++++++---------
.../error_condition/cons/lwg3629.cc | 18 +++++++++---------
.../23_containers/unordered_map/96088.cc | 1 +
.../23_containers/unordered_multimap/96088.cc | 1 +
.../23_containers/unordered_multiset/96088.cc | 1 +
.../23_containers/unordered_set/96088.cc | 1 +
.../experimental/synchronized_value.cc | 2 ++
8 files changed, 26 insertions(+), 18 deletions(-)
@@ -243,6 +243,8 @@
#undef v
// <sys/timer.h> defines trb::func and cputime_tmr::func
#undef func
+// <sys/thread.h> defines tstate::policy
+#undef policy
#endif
#ifdef __APPLE__
@@ -3,18 +3,18 @@
// 3629. make_error_code and make_error_condition are customization points
// Verify that make_error_code is looked up using ADL only.
-namespace user
+namespace User
{
struct E1;
}
// N.B. not in associated namespace of E1, and declared before <system_error>.
-user::E1 make_error_code(user::E1);
+User::E1 make_error_code(User::E1);
#include <future> // declares std::make_error_code(future_errc)
#include <system_error>
-namespace user
+namespace User
{
struct E1
{
@@ -32,17 +32,17 @@ namespace user
};
}
-template<> struct std::is_error_code_enum<user::E1> : std::true_type { };
-template<> struct std::is_error_code_enum<user::E2> : std::true_type { };
-template<> struct std::is_error_code_enum<user::E3> : std::true_type { };
+template<> struct std::is_error_code_enum<User::E1> : std::true_type { };
+template<> struct std::is_error_code_enum<User::E2> : std::true_type { };
+template<> struct std::is_error_code_enum<User::E3> : std::true_type { };
// ::make_error_code(E1) should not be found by name lookup.
-std::error_code e1( user::E1{} ); // { dg-error "here" }
+std::error_code e1( User::E1{} ); // { dg-error "here" }
// std::make_error_code(future_errc) should not be found by name lookup.
-std::error_code e2( user::E2{} ); // { dg-error "here" }
+std::error_code e2( User::E2{} ); // { dg-error "here" }
// std::make_error_code(errc) should not be found by name lookup.
-std::error_code e3( user::E3{} ); // { dg-error "here" }
+std::error_code e3( User::E3{} ); // { dg-error "here" }
// { dg-error "use of deleted function" "" { target *-*-* } 0 }
@@ -3,18 +3,18 @@
// 3629. make_error_code and make_error_condition are customization points
// Verify that make_error_condition is looked up using ADL only.
-namespace user
+namespace User
{
struct E1;
}
// N.B. not in associated namespace of E1, and declared before <system_error>.
-user::E1 make_error_condition(user::E1);
+User::E1 make_error_condition(User::E1);
#include <future> // declares std::make_error_condition(future_errc)
#include <system_error>
-namespace user
+namespace User
{
struct E1
{
@@ -32,17 +32,17 @@ namespace user
};
}
-template<> struct std::is_error_condition_enum<user::E1> : std::true_type { };
-template<> struct std::is_error_condition_enum<user::E2> : std::true_type { };
-template<> struct std::is_error_condition_enum<user::E3> : std::true_type { };
+template<> struct std::is_error_condition_enum<User::E1> : std::true_type { };
+template<> struct std::is_error_condition_enum<User::E2> : std::true_type { };
+template<> struct std::is_error_condition_enum<User::E3> : std::true_type { };
// ::make_error_condition(E1) should not be found by name lookup.
-std::error_condition e1( user::E1{} ); // { dg-error "here" }
+std::error_condition e1( User::E1{} ); // { dg-error "here" }
// std::make_error_condition(future_errc) should not be found by name lookup.
-std::error_condition e2( user::E2{} ); // { dg-error "here" }
+std::error_condition e2( User::E2{} ); // { dg-error "here" }
// std::make_error_condition(errc) should not be found by name lookup.
-std::error_condition e3( user::E3{} ); // { dg-error "here" }
+std::error_condition e3( User::E3{} ); // { dg-error "here" }
// { dg-error "use of deleted function" "" { target *-*-* } 0 }
@@ -1,5 +1,6 @@
// { dg-do run { target c++17 } }
// { dg-require-effective-target std_allocator_new }
+// { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
// Copyright (C) 2021-2023 Free Software Foundation, Inc.
//
@@ -1,5 +1,6 @@
// { dg-do run { target c++17 } }
// { dg-require-effective-target std_allocator_new }
+// { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
// Copyright (C) 2021-2023 Free Software Foundation, Inc.
//
@@ -1,5 +1,6 @@
// { dg-do run { target c++17 } }
// { dg-require-effective-target std_allocator_new }
+// { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
// Copyright (C) 2021-2023 Free Software Foundation, Inc.
//
@@ -1,5 +1,6 @@
// { dg-do run { target c++17 } }
// { dg-require-effective-target std_allocator_new }
+// { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
// Copyright (C) 2021-2023 Free Software Foundation, Inc.
//
@@ -1,4 +1,6 @@
// { dg-do run { target c++17 } }
+// { dg-additional-options "-pthread" { target pthread } }
+// { dg-require-gthreads "" }
#include <experimental/synchronized_value>
#include <testsuite_hooks.h>