]> gcc.gnu.org Git - gcc.git/commitdiff
libstdc++: Strengthen memory order for atomic<T>::wait/notify
authorThomas Rodgers <rodgert@appliantology.com>
Thu, 10 Feb 2022 18:12:36 +0000 (10:12 -0800)
committerThomas Rodgers <rodgert@appliantology.com>
Thu, 10 Feb 2022 18:21:55 +0000 (10:21 -0800)
This changes the memory order used in the spin wait code to match
that of libc++.

libstdc++-v3/ChangeLog:
* include/bits/atomic_wait.h (__waiter_base::_S_do_spin,
__waiter_base::_S_do_spin_v): Change memory order from relaxed
to acquire.

(cherry picked from commit b25a7c05f120e46a60430dcefe529c72303b7022)

libstdc++-v3/include/bits/atomic_wait.h

index d7ded906360043d06f638fe7486d31a21dd8bb0e..394f666d02ede42bb11f09b8086b850ae089aaa5 100644 (file)
@@ -334,7 +334,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
              }
            else
              {
-               __atomic_load(__addr, &__val, __ATOMIC_RELAXED);
+               __atomic_load(__addr, &__val, __ATOMIC_ACQUIRE);
              }
            return __atomic_spin(__pred, __spin);
          }
@@ -355,7 +355,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                     __platform_wait_t& __val,
                     _Spin __spin = _Spin{ })
          {
-           __atomic_load(__addr, &__val, __ATOMIC_RELAXED);
+           __atomic_load(__addr, &__val, __ATOMIC_ACQUIRE);
            return __atomic_spin(__pred, __spin);
          }
 
This page took 0.060793 seconds and 5 git commands to generate.