-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[libc++] Set feature-test macro __cpp_lib_atomic_float
#127559
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[libc++] Set feature-test macro __cpp_lib_atomic_float
#127559
Conversation
The corresponding feature was implemented in LLVM 18, but this FTM wasn't added before.
@llvm/pr-subscribers-libcxx Author: A. Jiang (frederick-vs-ja) ChangesThe corresponding feature was implemented in LLVM 18 (by #67799), but this FTM wasn't added before. Full diff: https://github.com/llvm/llvm-project/pull/127559.diff 6 Files Affected:
diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index ccaa784ccb088..dcf9838edd74b 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -174,7 +174,7 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_flag_test`` ``201907L``
---------------------------------------------------------- -----------------
- ``__cpp_lib_atomic_float`` *unimplemented*
+ ``__cpp_lib_atomic_float`` ``201711L``
---------------------------------------------------------- -----------------
``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L``
---------------------------------------------------------- -----------------
diff --git a/libcxx/docs/Status/Cxx20Papers.csv b/libcxx/docs/Status/Cxx20Papers.csv
index 360b5520260ce..ad2a27a2f45bd 100644
--- a/libcxx/docs/Status/Cxx20Papers.csv
+++ b/libcxx/docs/Status/Cxx20Papers.csv
@@ -2,7 +2,7 @@
"`P0463R1 <https://wg21.link/P0463R1>`__","Endian just Endian","2017-07 (Toronto)","|Complete|","7",""
"`P0674R1 <https://wg21.link/P0674R1>`__","Extending make_shared to Support Arrays","2017-07 (Toronto)","|Complete|","15",""
"","","","","",""
-"`P0020R6 <https://wg21.link/P0020R6>`__","Floating Point Atomic","2017-11 (Albuquerque)","|Complete|","18",""
+"`P0020R6 <https://wg21.link/P0020R6>`__","Floating Point Atomic","2017-11 (Albuquerque)","|Complete|","18","The feature-test macro was not set until LLVM 21."
"`P0053R7 <https://wg21.link/P0053R7>`__","C++ Synchronized Buffered Ostream","2017-11 (Albuquerque)","|Complete|","18",""
"`P0202R3 <https://wg21.link/P0202R3>`__","Add constexpr modifiers to functions in <algorithm> and <utility> Headers","2017-11 (Albuquerque)","|Complete|","12",""
"`P0415R1 <https://wg21.link/P0415R1>`__","Constexpr for ``std::complex``\ ","2017-11 (Albuquerque)","|Complete|","16",""
diff --git a/libcxx/include/version b/libcxx/include/version
index c5966b90c061d..63ead9fd5d29d 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -378,7 +378,7 @@ __cpp_lib_void_t 201411L <type_traits>
# define __cpp_lib_array_constexpr 201811L
# define __cpp_lib_assume_aligned 201811L
# define __cpp_lib_atomic_flag_test 201907L
-// # define __cpp_lib_atomic_float 201711L
+# define __cpp_lib_atomic_float 201711L
# define __cpp_lib_atomic_lock_free_type_aliases 201907L
# define __cpp_lib_atomic_ref 201806L
// # define __cpp_lib_atomic_shared_ptr 201711L
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
index 9ed18fbfe19ac..5a21e6320bffe 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
@@ -169,17 +169,11 @@
# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++20"
# endif
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should be defined in c++20"
-# endif
-# if __cpp_lib_atomic_float != 201711L
-# error "__cpp_lib_atomic_float should have the value 201711L in c++20"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should not be defined because it is unimplemented in libc++!"
-# endif
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++20"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++20"
# endif
# ifndef __cpp_lib_atomic_is_always_lock_free
@@ -262,17 +256,11 @@
# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++23"
# endif
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should be defined in c++23"
-# endif
-# if __cpp_lib_atomic_float != 201711L
-# error "__cpp_lib_atomic_float should have the value 201711L in c++23"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should not be defined because it is unimplemented in libc++!"
-# endif
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++23"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++23"
# endif
# ifndef __cpp_lib_atomic_is_always_lock_free
@@ -355,17 +343,11 @@
# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++26"
# endif
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should be defined in c++26"
-# endif
-# if __cpp_lib_atomic_float != 201711L
-# error "__cpp_lib_atomic_float should have the value 201711L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should not be defined because it is unimplemented in libc++!"
-# endif
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++26"
# endif
# ifndef __cpp_lib_atomic_is_always_lock_free
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
index 137d6cb428930..1e4465d515e6b 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
@@ -3282,17 +3282,11 @@
# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++20"
# endif
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should be defined in c++20"
-# endif
-# if __cpp_lib_atomic_float != 201711L
-# error "__cpp_lib_atomic_float should have the value 201711L in c++20"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should not be defined because it is unimplemented in libc++!"
-# endif
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++20"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++20"
# endif
# ifndef __cpp_lib_atomic_is_always_lock_free
@@ -4707,17 +4701,11 @@
# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++23"
# endif
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should be defined in c++23"
-# endif
-# if __cpp_lib_atomic_float != 201711L
-# error "__cpp_lib_atomic_float should have the value 201711L in c++23"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should not be defined because it is unimplemented in libc++!"
-# endif
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++23"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++23"
# endif
# ifndef __cpp_lib_atomic_is_always_lock_free
@@ -6369,17 +6357,11 @@
# error "__cpp_lib_atomic_flag_test should have the value 201907L in c++26"
# endif
-# if !defined(_LIBCPP_VERSION)
-# ifndef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should be defined in c++26"
-# endif
-# if __cpp_lib_atomic_float != 201711L
-# error "__cpp_lib_atomic_float should have the value 201711L in c++26"
-# endif
-# else // _LIBCPP_VERSION
-# ifdef __cpp_lib_atomic_float
-# error "__cpp_lib_atomic_float should not be defined because it is unimplemented in libc++!"
-# endif
+# ifndef __cpp_lib_atomic_float
+# error "__cpp_lib_atomic_float should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_float != 201711L
+# error "__cpp_lib_atomic_float should have the value 201711L in c++26"
# endif
# ifndef __cpp_lib_atomic_is_always_lock_free
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index 25168b9087754..8bf7633e985d5 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -169,7 +169,6 @@ def add_version_header(tc):
"name": "__cpp_lib_atomic_float",
"values": {"c++20": 201711},
"headers": ["atomic"],
- "unimplemented": True,
},
{
"name": "__cpp_lib_atomic_is_always_lock_free",
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
/cherry-pick 2207e3e |
/pull-request #127732 |
The corresponding feature was implemented in LLVM 18 (by llvm#67799), but this FTM wasn't added before. (cherry picked from commit 2207e3e)
The corresponding feature was implemented in LLVM 18 (by #67799), but this FTM wasn't added before.