https://gcc.gnu.org/g:bbbd6a97f3b48af92210a60d58d0a6a3f3952c80
commit r16-5307-gbbbd6a97f3b48af92210a60d58d0a6a3f3952c80 Author: Jonathan Wakely <[email protected]> Date: Fri Nov 14 15:51:52 2025 +0000 libstdc++: Minor refactoring in __wait_until_impl in atomic.cc libstdc++-v3/ChangeLog: * src/c++20/atomic.cc (__wait_impl): Fix outdated comment. (__wait_until_impl): Simplify return statements. Diff: --- libstdc++-v3/src/c++20/atomic.cc | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/libstdc++-v3/src/c++20/atomic.cc b/libstdc++-v3/src/c++20/atomic.cc index 7978809cd223..e280045b619d 100644 --- a/libstdc++-v3/src/c++20/atomic.cc +++ b/libstdc++-v3/src/c++20/atomic.cc @@ -278,7 +278,7 @@ __wait_impl(const void* __addr, __wait_args_base& __args) set_wait_state(__addr, __args); // scoped_wait needs a __waitable_state scoped_wait s(__args); __platform_wait(__wait_addr, __args._M_old); - // We haven't loaded a new value so return false as first member: + // We haven't loaded a new value so return _M_has_val=false return { ._M_val = __args._M_old, ._M_has_val = false, ._M_timeout = false }; #else waiter_lock l(__args); @@ -452,20 +452,16 @@ __wait_until_impl(const void* __addr, __wait_args_base& __args, if (__args & __wait_flags::__track_contention) set_wait_state(__addr, __args); scoped_wait s(__args); - if (__platform_wait_until(__wait_addr, __args._M_old, __atime)) - return { ._M_val = __args._M_old, ._M_has_val = false, ._M_timeout = false }; - else - return { ._M_val = __args._M_old, ._M_has_val = false, ._M_timeout = true }; + bool timeout = !__platform_wait_until(__wait_addr, __args._M_old, __atime); + return { ._M_val = __args._M_old, ._M_has_val = false, ._M_timeout = timeout }; #else waiter_lock l(__args); __platform_wait_t __val; __atomic_load(__wait_addr, &__val, __args._M_order); if (__val == __args._M_old) { - if (__cond_wait_until(__state->_M_cv, __state->_M_mtx, __atime)) - return { ._M_val = __val, ._M_has_val = false, ._M_timeout = false }; - else - return { ._M_val = __val, ._M_has_val = false, ._M_timeout = true }; + bool timeout = !__cond_wait_until(__state->_M_cv, __state->_M_mtx, __atime); + return { ._M_val = __val, ._M_has_val = false, ._M_timeout = timeout }; } return { ._M_val = __val, ._M_has_val = true, ._M_timeout = false }; #endif
