These two tests fail on AIX because <sys/thread.h> defines struct thread in the global namespace (despite it not being a reserved name). That means the using-declaration that adds it to the global namespace causes a redeclaration error.
libstdc++-v3/ChangeLog: * testsuite/30_threads/thread/cons/84535.cc: Use a custom namespace. * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise. Tested powerpc64le-linux and powerpc-aix. Committed to trunk.
commit fe8d7fec4db838cae536eeef1965db83959cf6ee Author: Jonathan Wakely <jwak...@redhat.com> Date: Tue Aug 11 16:16:22 2020 libstdc++: Fix failing tests for AIX These two tests fail on AIX because <sys/thread.h> defines struct thread in the global namespace (despite it not being a reserved name). That means the using-declaration that adds it to the global namespace causes a redeclaration error. libstdc++-v3/ChangeLog: * testsuite/30_threads/thread/cons/84535.cc: Use a custom namespace. * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise. diff --git a/libstdc++-v3/testsuite/30_threads/thread/cons/84535.cc b/libstdc++-v3/testsuite/30_threads/thread/cons/84535.cc index 7846d3f7b68..711687b4f5c 100644 --- a/libstdc++-v3/testsuite/30_threads/thread/cons/84535.cc +++ b/libstdc++-v3/testsuite/30_threads/thread/cons/84535.cc @@ -20,6 +20,8 @@ #include <thread> +namespace __gnu_test +{ using std::is_constructible; using std::thread; @@ -28,3 +30,4 @@ static_assert(!is_constructible<thread, thread, int>::value, ""); static_assert(!is_constructible<thread, thread&, int>::value, ""); static_assert(!is_constructible<thread, const thread&, int>::value, ""); static_assert(!is_constructible<thread, const thread&&, int>::value, ""); +} diff --git a/libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc b/libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc index e0d588e51f9..1ad2a76cb58 100644 --- a/libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc +++ b/libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc @@ -20,9 +20,12 @@ #include <thread> +namespace __gnu_test +{ using std::thread; using std::is_constructible; static_assert( !is_constructible<thread, thread&>::value, "" ); static_assert( !is_constructible<thread, const thread&>::value, "" ); static_assert( !is_constructible<thread, const thread>::value, "" ); +}