https://gcc.gnu.org/g:656371238e2a92b2e38661dbd0b19978c2ad8466
commit r14-12256-g656371238e2a92b2e38661dbd0b19978c2ad8466 Author: Jonathan Wakely <[email protected]> Date: Thu Dec 4 21:07:19 2025 +0000 libstdc++: std::atomic should use std::addressof libstdc++-v3/ChangeLog: * include/bits/atomic_wait.h (__detail::__atomic_compare): Use std::addressof instead of &. * include/std/atomic (atomic::wait, atomic::notify_one) (atomic::notify_all): Likewise. Reviewed-by: Patrick Palka <[email protected]> (cherry picked from commit 7a2d14187611ac5a7e9af24397455b3f0503fdcb) Diff: --- libstdc++-v3/include/bits/atomic_wait.h | 3 ++- libstdc++-v3/include/std/atomic | 9 ++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libstdc++-v3/include/bits/atomic_wait.h b/libstdc++-v3/include/bits/atomic_wait.h index 6c98f3963ad1..9741c87fa2ff 100644 --- a/libstdc++-v3/include/bits/atomic_wait.h +++ b/libstdc++-v3/include/bits/atomic_wait.h @@ -186,7 +186,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool __atomic_compare(const _Tp& __a, const _Tp& __b) { // TODO make this do the correct padding bit ignoring comparison - return __builtin_memcmp(&__a, &__b, sizeof(_Tp)) == 0; + return __builtin_memcmp(std::addressof(__a), std::addressof(__b), + sizeof(_Tp)) == 0; } struct __waiter_pool_base diff --git a/libstdc++-v3/include/std/atomic b/libstdc++-v3/include/std/atomic index 608a9e7ca28d..50fb0a9ddbb6 100644 --- a/libstdc++-v3/include/std/atomic +++ b/libstdc++-v3/include/std/atomic @@ -395,21 +395,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void wait(_Tp __old, memory_order __m = memory_order_seq_cst) const noexcept { - std::__atomic_wait_address_v(&_M_i, __old, - [__m, this] { return this->load(__m); }); + std::__atomic_wait_address_v(std::addressof(_M_i), __old, + [__m, this] { return this->load(__m); }); } // TODO add const volatile overload void notify_one() noexcept - { std::__atomic_notify_address(&_M_i, false); } + { std::__atomic_notify_address(std::addressof(_M_i), false); } void notify_all() noexcept - { std::__atomic_notify_address(&_M_i, true); } + { std::__atomic_notify_address(std::addressof(_M_i), true); } #endif // __cpp_lib_atomic_wait - }; #undef _GLIBCXX20_INIT
