These features depend on __cpp_lib_atomic_wait which is not available
for freestanding, and is available when either gthreads is supported, or
the target is linux (for futex support).

libstdc++-v3/ChangeLog:

        * testsuite/30_threads/barrier/1.cc: Require hosted. Only
        require gthreads for non-linux targets.
        * testsuite/30_threads/barrier/2.cc: Likewise.
        * testsuite/30_threads/semaphore/1.cc: Likewise.
        * testsuite/30_threads/semaphore/2.cc: Likewise.
        * testsuite/30_threads/semaphore/cons.cc: Likewise.
        * testsuite/30_threads/semaphore/least_max_value_neg.cc:
        Likewise.
        * testsuite/30_threads/semaphore/try_acquire.cc: Likewise.
---

This allows the semaphore tests to run for linux even when using
--disable-threads, because they only need gthreads when futexes aren't
available. Supporting --disable-threads isn't really an important
configuration, but it's a simple change for these tests anyway. Similar
changes could be made for 29_atomics/atomic/wait_notify/1.cc and other
tests that depend on atomic waiting.

Tested x86_64-linux (with and without --disable-threads) and
sparc-solaris.

 libstdc++-v3/testsuite/30_threads/barrier/1.cc                | 3 ++-
 libstdc++-v3/testsuite/30_threads/barrier/2.cc                | 2 +-
 libstdc++-v3/testsuite/30_threads/semaphore/1.cc              | 2 ++
 libstdc++-v3/testsuite/30_threads/semaphore/2.cc              | 1 +
 libstdc++-v3/testsuite/30_threads/semaphore/cons.cc           | 2 ++
 .../testsuite/30_threads/semaphore/least_max_value_neg.cc     | 4 ++--
 libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc    | 3 ++-
 7 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/testsuite/30_threads/barrier/1.cc 
b/libstdc++-v3/testsuite/30_threads/barrier/1.cc
index eff8ef3a174b..01c55d96cd20 100644
--- a/libstdc++-v3/testsuite/30_threads/barrier/1.cc
+++ b/libstdc++-v3/testsuite/30_threads/barrier/1.cc
@@ -16,7 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
-// { dg-require-effective-target gthreads }
+// { dg-require-effective-target gthreads { target { ! *-*-linux* } } }
+// { dg-require-effective-target hosted }
 // { dg-add-options no_pch }
 
 #include <barrier>
diff --git a/libstdc++-v3/testsuite/30_threads/barrier/2.cc 
b/libstdc++-v3/testsuite/30_threads/barrier/2.cc
index e0188b3fd8ea..728030babbd1 100644
--- a/libstdc++-v3/testsuite/30_threads/barrier/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/barrier/2.cc
@@ -16,7 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
-// { dg-require-effective-target gthreads }
+// { dg-require-effective-target gthreads { target { ! *-*-linux* } } }
 // { dg-require-effective-target hosted }
 // { dg-add-options no_pch }
 
diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/1.cc 
b/libstdc++-v3/testsuite/30_threads/semaphore/1.cc
index ac9f97b816fe..cc6befcc1a50 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/1.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/1.cc
@@ -16,6 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-require-effective-target gthreads { target { ! *-*-linux* } } }
+// { dg-require-effective-target hosted }
 // { dg-add-options no_pch }
 
 #include <semaphore>
diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/2.cc 
b/libstdc++-v3/testsuite/30_threads/semaphore/2.cc
index 251e96adae68..bff747c0aa33 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/2.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-require-effective-target gthreads { target { ! *-*-linux* } } }
 // { dg-require-effective-target hosted }
 // { dg-add-options no_pch }
 
diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/cons.cc 
b/libstdc++-v3/testsuite/30_threads/semaphore/cons.cc
index 920f7423332b..790ff2eab557 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/cons.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/cons.cc
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++20 } }
+// { dg-require-effective-target gthreads { target { ! *-*-linux* } } }
+// { dg-require-effective-target hosted }
 
 #include <semaphore>
 
diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/least_max_value_neg.cc 
b/libstdc++-v3/testsuite/30_threads/semaphore/least_max_value_neg.cc
index 1498d38cb93a..e2680b12e5ae 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/least_max_value_neg.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/least_max_value_neg.cc
@@ -16,8 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
-// { dg-require-effective-target pthread }
-// { dg-require-gthreads "" }
+// { dg-require-effective-target gthreads { target { ! *-*-linux* } } }
+// { dg-require-effective-target hosted }
 
 #include <semaphore>
 
diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc 
b/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc
index d709126cf342..ea7859b22c6c 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc
@@ -17,7 +17,8 @@
 
 // { dg-do run { target c++20 } }
 // { dg-additional-options "-pthread" { target pthread } }
-// { dg-require-gthreads "" }
+// { dg-require-effective-target gthreads { target { ! *-*-linux* } } }
+// { dg-require-effective-target hosted }
 // { dg-add-options libatomic }
 
 #include <semaphore>
-- 
2.49.0

Reply via email to