libstdc++-v3/ChangeLog:

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

Tested x86_64-linux and sparc-solaris. Pushed to trunk.

 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
-- 
2.51.1

Reply via email to