[gcc r14-12256] libstdc++: std::atomic should use std::addressof
Jonathan Wakely
redi@gcc.gnu.org
Thu Jan 22 21:16:12 GMT 2026
https://gcc.gnu.org/g:656371238e2a92b2e38661dbd0b19978c2ad8466
commit r14-12256-g656371238e2a92b2e38661dbd0b19978c2ad8466
Author: Jonathan Wakely <jwakely@redhat.com>
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 <ppalka@redhat.com>
(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
More information about the Libstdc++-cvs
mailing list