https://gcc.gnu.org/g:466c80a885ccbd5186cd57b0785cf38b8cf2ff2f
commit r16-95-g466c80a885ccbd5186cd57b0785cf38b8cf2ff2f Author: ZENG Hao <c...@cyano.cn> Date: Sun Apr 20 17:02:16 2025 +0800 libstdc++: fix possible undefined atomic lock-free type aliases in module std When building for 'i386-*' targets, all basic types are 'sometimes lock-free' and thus std::atomic_signed_lock_free and std::atomic_unsigned_lock_free are not declared. In the header <atomic>, they are placed in preprocessor condition __cpp_lib_atomic_lock_free_type_aliases. In module std, they should be the same. libstdc++-v3/ChangeLog: * src/c++23/std.cc.in (atomic_signed_lock_free): Guard with preprocessor check for __cpp_lib_atomic_lock_free_type_aliases. (atomic_unsigned_lock_free): Likewise. Diff: --- libstdc++-v3/src/c++23/std.cc.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in index 5e18ad739083..ea50496b057c 100644 --- a/libstdc++-v3/src/c++23/std.cc.in +++ b/libstdc++-v3/src/c++23/std.cc.in @@ -599,7 +599,9 @@ export namespace std using std::atomic_schar; using std::atomic_short; using std::atomic_signal_fence; +#ifdef __cpp_lib_atomic_lock_free_type_aliases using std::atomic_signed_lock_free; +#endif using std::atomic_size_t; using std::atomic_store; using std::atomic_store_explicit; @@ -622,7 +624,9 @@ export namespace std using std::atomic_uintptr_t; using std::atomic_ullong; using std::atomic_ulong; +#ifdef __cpp_lib_atomic_lock_free_type_aliases using std::atomic_unsigned_lock_free; +#endif using std::atomic_ushort; using std::atomic_wait; using std::atomic_wait_explicit;