aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2021-02-15 15:35:55 +0000
committerJonathan Wakely <jwakely@redhat.com>2021-02-15 15:52:25 +0000
commitcc9a0a3d79d6abb08753a819c9ea21a25015e962 (patch)
treeb83ee194f7517919ba93e46a0692bca712237030
parentd27153f038c2f39ed1b7e6ba9dab59f88b8ca245 (diff)
downloadgcc-cc9a0a3d79d6abb08753a819c9ea21a25015e962.zip
gcc-cc9a0a3d79d6abb08753a819c9ea21a25015e962.tar.gz
gcc-cc9a0a3d79d6abb08753a819c9ea21a25015e962.tar.bz2
libstdc++: Fix __thread_yield for non-gthreads targets
The __gthread_yield() function is only defined for gthreads targets, so check _GLIBCXX_HAS_GTHREADS before using it. Also reorder __thread_relax and __thread_yield so that the former can use the latter instead of repeating the same preprocessor checks. libstdc++-v3/ChangeLog: * include/bits/atomic_wait.h (__thread_yield()): Check _GLIBCXX_HAS_GTHREADS before using __gthread_yield. (__thread_relax()): Use __thread_yield() instead of repeating the preprocessor checks for __gthread_yield.
-rw-r--r--libstdc++-v3/include/bits/atomic_wait.h17
1 files changed, 8 insertions, 9 deletions
diff --git a/libstdc++-v3/include/bits/atomic_wait.h b/libstdc++-v3/include/bits/atomic_wait.h
index 1a0f094..37085ae 100644
--- a/libstdc++-v3/include/bits/atomic_wait.h
+++ b/libstdc++-v3/include/bits/atomic_wait.h
@@ -214,23 +214,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
inline void
- __thread_relax() noexcept
+ __thread_yield() noexcept
{
-#if defined __i386__ || defined __x86_64__
- __builtin_ia32_pause();
-#elif defined _GLIBCXX_USE_SCHED_YIELD
- __gthread_yield();
+#if defined _GLIBCXX_HAS_GTHREADS && defined _GLIBCXX_USE_SCHED_YIELD
+ __gthread_yield();
#endif
}
inline void
- __thread_yield() noexcept
+ __thread_relax() noexcept
{
-#if defined _GLIBCXX_USE_SCHED_YIELD
- __gthread_yield();
+#if defined __i386__ || defined __x86_64__
+ __builtin_ia32_pause();
+#else
+ __gthread_yield();
#endif
}
-
} // namespace __detail
template<typename _Pred>