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;

Reply via email to