]> git.ipfire.org Git - thirdparty/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:14:36 +0000 (10:14 -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.

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

index 6ce7f9343cf562cd9fe87342bdb47a2f283095cf..125b1cad88682384737c048ac236af9c4deab957 100644 (file)
@@ -332,7 +332,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
              }
            else
              {
-               __atomic_load(__addr, &__val, __ATOMIC_RELAXED);
+               __atomic_load(__addr, &__val, __ATOMIC_ACQUIRE);
              }
            return __atomic_spin(__pred, __spin);
          }
@@ -353,7 +353,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);
          }