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: Add preprocessor condition
__cpp_lib_atomic_lock_free_type_aliases for
std::atomic_signed_lock_free and std::atomic_unsigned_lock_free.
---
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 5e18ad73908..ea50496b057 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;
--
2.49.0