mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
libstdc++: Check _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK with #if [PR121496]
The change in r14-905-g3b7cb33033fbe6 to disable the use of pthread_mutex_clocklock when TSan is active assumed that the _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK macro was always checked with #if rather than #ifdef, which was not true. This makes the checks use #if consistently. libstdc++-v3/ChangeLog: PR libstdc++/121496 * include/std/mutex (__timed_mutex_impl::_M_try_wait_until): Change preprocessor condition to use #if instead of #ifdef. (recursive_timed_mutex::_M_clocklock): Likewise. * testsuite/30_threads/timed_mutex/121496.cc: New test. Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
This commit is contained in:
committed by
Jonathan Wakely
parent
3182e95eda
commit
d1dec30445
@@ -190,7 +190,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
return static_cast<_Derived*>(this)->_M_timedlock(__ts);
|
||||
}
|
||||
|
||||
#ifdef _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK
|
||||
#if _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK
|
||||
template<typename _Duration>
|
||||
bool
|
||||
_M_try_lock_until(const chrono::time_point<chrono::steady_clock,
|
||||
@@ -377,7 +377,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
_M_timedlock(const __gthread_time_t& __ts)
|
||||
{ return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); }
|
||||
|
||||
#ifdef _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK
|
||||
#if _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK
|
||||
bool
|
||||
_M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts)
|
||||
{ return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); }
|
||||
|
||||
14
libstdc++-v3/testsuite/30_threads/timed_mutex/121496.cc
Normal file
14
libstdc++-v3/testsuite/30_threads/timed_mutex/121496.cc
Normal file
@@ -0,0 +1,14 @@
|
||||
// { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && lp64 } } }
|
||||
// { dg-require-effective-target c++11 }
|
||||
// { dg-options "-fsanitize=thread" }
|
||||
|
||||
// PR libstdc++/121496 no member named '_M_clocklock' with -fsanitize=thread
|
||||
|
||||
#include <mutex>
|
||||
#include <chrono>
|
||||
|
||||
void
|
||||
test_pr121496(std::timed_mutex& m)
|
||||
{
|
||||
(void) m.try_lock_until(std::chrono::steady_clock::time_point{});
|
||||
}
|
||||
Reference in New Issue
Block a user