From: Jonathan Wakely Date: Fri, 14 Nov 2025 15:51:52 +0000 (+0000) Subject: libstdc++: Minor refactoring in __wait_until_impl in atomic.cc X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbbd6a97f3b48af92210a60d58d0a6a3f3952c80;p=thirdparty%2Fgcc.git 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 --git a/libstdc++-v3/src/c++20/atomic.cc b/libstdc++-v3/src/c++20/atomic.cc index 7978809cd22..e280045b619 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