These functions can all be noexcept (if we ever wanted to check the mutex is owned by the calling thread in the adopt_lock ctors we'd abort, not throw).
* include/bits/std_mutex.h (mutex::native_handle) (lock_guard(mutex_type&, adopt_lock_t) (unique_lock(mutex_type&, adopt_lock_t): Add noexcept. * include/std/mutex (recursive_mutex, timed_mutex) (recursive_timed_mutex): Likewise. Tested powerpc64le-linux, committed to trunk.
commit 65e13b82ae0dac570b2e558d302bffa791d94375 Author: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue Oct 11 10:33:16 2016 +0000 More noexcept for standard mutex types and locks * include/bits/std_mutex.h (mutex::native_handle) (lock_guard(mutex_type&, adopt_lock_t) (unique_lock(mutex_type&, adopt_lock_t): Add noexcept. * include/std/mutex (recursive_mutex, timed_mutex) (recursive_timed_mutex): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@240980 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/libstdc++-v3/include/bits/std_mutex.h b/libstdc++-v3/include/bits/std_mutex.h index 49ef752..ad43841 100644 --- a/libstdc++-v3/include/bits/std_mutex.h +++ b/libstdc++-v3/include/bits/std_mutex.h @@ -122,7 +122,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } native_handle_type - native_handle() + native_handle() noexcept { return &_M_mutex; } }; @@ -161,7 +161,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION explicit lock_guard(mutex_type& __m) : _M_device(__m) { _M_device.lock(); } - lock_guard(mutex_type& __m, adopt_lock_t) : _M_device(__m) + lock_guard(mutex_type& __m, adopt_lock_t) noexcept : _M_device(__m) { } // calling thread owns mutex ~lock_guard() @@ -206,7 +206,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : _M_device(std::__addressof(__m)), _M_owns(_M_device->try_lock()) { } - unique_lock(mutex_type& __m, adopt_lock_t) + unique_lock(mutex_type& __m, adopt_lock_t) noexcept : _M_device(std::__addressof(__m)), _M_owns(true) { // XXX calling thread owns mutex diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex index 1f4da57..7a7bd2e 100644 --- a/libstdc++-v3/include/std/mutex +++ b/libstdc++-v3/include/std/mutex @@ -124,7 +124,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } native_handle_type - native_handle() + native_handle() noexcept { return &_M_mutex; } }; @@ -219,7 +219,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } native_handle_type - native_handle() + native_handle() noexcept { return &_M_mutex; } private: @@ -279,7 +279,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } native_handle_type - native_handle() + native_handle() noexcept { return &_M_mutex; } private: