]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Minor refactoring in __wait_until_impl in atomic.cc
authorJonathan Wakely <jwakely@redhat.com>
Fri, 14 Nov 2025 15:51:52 +0000 (15:51 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Sat, 15 Nov 2025 21:45:44 +0000 (21:45 +0000)
libstdc++-v3/ChangeLog:

* src/c++20/atomic.cc (__wait_impl): Fix outdated comment.
(__wait_until_impl): Simplify return statements.

libstdc++-v3/src/c++20/atomic.cc

index 7978809cd2230dbf8f84c3b2d3c7b6dfd780f2f5..e280045b619d68a83745d87fee7169eb8da0acad 100644 (file)
@@ -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