On Fri, Jun 6, 2025 at 3:13 PM Jonathan Wakely <jwak...@redhat.com> wrote:

> 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.
>
LGTM.

>
>  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