This is an equality comparison rather than a three-way comparison like memcmp and <=>, so name it more precisely.
libstdc++-v3/ChangeLog: * include/bits/atomic_timed_wait.h (__atomic_wait_address_until_v): Replace __atomic_compare with __atomic_eq. (__atomic_wait_address_for_v): Likewise. * include/bits/atomic_wait.h (__atomic_compare): Rename to __atomic_eq. (__atomic_wait_address_v): Replace __atomic_compare with __atomic_eq. --- libstdc++-v3/include/bits/atomic_timed_wait.h | 10 ++++++---- libstdc++-v3/include/bits/atomic_wait.h | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/libstdc++-v3/include/bits/atomic_timed_wait.h b/libstdc++-v3/include/bits/atomic_timed_wait.h index 645b8cfc4a8b..9a60f34c130d 100644 --- a/libstdc++-v3/include/bits/atomic_timed_wait.h +++ b/libstdc++-v3/include/bits/atomic_timed_wait.h @@ -304,8 +304,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const chrono::time_point<_Clock, _Dur>& __atime, bool __bare_wait = false) noexcept { - auto __pfn = [&](const _Tp& __val) - { return !__detail::__atomic_compare(__old, __val); }; + auto __pfn = [&](const _Tp& __val) { + return !__detail::__atomic_eq(__old, __val); + }; return __atomic_wait_address_until(__addr, __pfn, forward<_ValFn>(__vfn), __atime, __bare_wait); } @@ -352,8 +353,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const chrono::duration<_Rep, _Period>& __rtime, bool __bare_wait = false) noexcept { - auto __pfn = [&](const _Tp& __val) - { return !__detail::__atomic_compare(__old, __val); }; + auto __pfn = [&](const _Tp& __val) { + return !__detail::__atomic_eq(__old, __val); + }; return __atomic_wait_address_for(__addr, __pfn, forward<_ValFn>(__vfn), __rtime, __bare_wait); } diff --git a/libstdc++-v3/include/bits/atomic_wait.h b/libstdc++-v3/include/bits/atomic_wait.h index db4fa031d2cf..0b29b17178e9 100644 --- a/libstdc++-v3/include/bits/atomic_wait.h +++ b/libstdc++-v3/include/bits/atomic_wait.h @@ -154,7 +154,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // return true if equal template<typename _Tp> - bool __atomic_compare(const _Tp& __a, const _Tp& __b) + inline bool + __atomic_eq(const _Tp& __a, const _Tp& __b) { // TODO make this do the correct padding bit ignoring comparison return __builtin_memcmp(&__a, &__b, sizeof(_Tp)) == 0; @@ -469,7 +470,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _ValFn __vfn) noexcept { auto __pfn = [&](const _Tp& __val) - { return !__detail::__atomic_compare(__old, __val); }; + { return !__detail::__atomic_eq(__old, __val); }; __atomic_wait_address(__addr, __pfn, forward<_ValFn>(__vfn)); } -- 2.47.1