diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst index 2eff42918886c4..2a34aa4fe55cca 100644 --- a/libcxx/docs/FeatureTestMacroTable.rst +++ b/libcxx/docs/FeatureTestMacroTable.rst @@ -178,7 +178,7 @@ Status ---------------------------------------------------------- ----------------- ``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L`` ---------------------------------------------------------- ----------------- - ``__cpp_lib_atomic_ref`` *unimplemented* + ``__cpp_lib_atomic_ref`` ``201806L`` ---------------------------------------------------------- ----------------- ``__cpp_lib_atomic_shared_ptr`` *unimplemented* ---------------------------------------------------------- ----------------- diff --git a/libcxx/include/version b/libcxx/include/version index 460af8b6d396c3..21231a4d4b0fc8 100644 --- a/libcxx/include/version +++ b/libcxx/include/version @@ -366,7 +366,7 @@ __cpp_lib_void_t 201411L # define __cpp_lib_atomic_flag_test 201907L // # 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_ref 201806L // # define __cpp_lib_atomic_shared_ptr 201711L # define __cpp_lib_atomic_value_initialization 201911L # if _LIBCPP_AVAILABILITY_HAS_SYNC 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 c907b7d840e30d..9ed18fbfe19ac4 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 @@ -200,17 +200,11 @@ # error "__cpp_lib_atomic_min_max should not be defined before c++26" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should be defined in c++20" -# endif -# if __cpp_lib_atomic_ref != 201806L -# error "__cpp_lib_atomic_ref should have the value 201806L in c++20" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_atomic_ref +# error "__cpp_lib_atomic_ref should be defined in c++20" +# endif +# if __cpp_lib_atomic_ref != 201806L +# error "__cpp_lib_atomic_ref should have the value 201806L in c++20" # endif # if !defined(_LIBCPP_VERSION) @@ -299,17 +293,11 @@ # error "__cpp_lib_atomic_min_max should not be defined before c++26" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should be defined in c++23" -# endif -# if __cpp_lib_atomic_ref != 201806L -# error "__cpp_lib_atomic_ref should have the value 201806L in c++23" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_atomic_ref +# error "__cpp_lib_atomic_ref should be defined in c++23" +# endif +# if __cpp_lib_atomic_ref != 201806L +# error "__cpp_lib_atomic_ref should have the value 201806L in c++23" # endif # if !defined(_LIBCPP_VERSION) @@ -407,17 +395,11 @@ # endif # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should be defined in c++26" -# endif -# if __cpp_lib_atomic_ref != 201806L -# error "__cpp_lib_atomic_ref should have the value 201806L in c++26" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_atomic_ref +# error "__cpp_lib_atomic_ref should be defined in c++26" +# endif +# if __cpp_lib_atomic_ref != 201806L +# error "__cpp_lib_atomic_ref should have the value 201806L in c++26" # endif # if !defined(_LIBCPP_VERSION) 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 9a5a10a8fb0f5a..c0ffd78ebe3b15 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 @@ -3254,17 +3254,11 @@ # error "__cpp_lib_atomic_min_max should not be defined before c++26" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should be defined in c++20" -# endif -# if __cpp_lib_atomic_ref != 201806L -# error "__cpp_lib_atomic_ref should have the value 201806L in c++20" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_atomic_ref +# error "__cpp_lib_atomic_ref should be defined in c++20" +# endif +# if __cpp_lib_atomic_ref != 201806L +# error "__cpp_lib_atomic_ref should have the value 201806L in c++20" # endif # if !defined(_LIBCPP_VERSION) @@ -4675,17 +4669,11 @@ # error "__cpp_lib_atomic_min_max should not be defined before c++26" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should be defined in c++23" -# endif -# if __cpp_lib_atomic_ref != 201806L -# error "__cpp_lib_atomic_ref should have the value 201806L in c++23" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_atomic_ref +# error "__cpp_lib_atomic_ref should be defined in c++23" +# endif +# if __cpp_lib_atomic_ref != 201806L +# error "__cpp_lib_atomic_ref should have the value 201806L in c++23" # endif # if !defined(_LIBCPP_VERSION) @@ -6318,17 +6306,11 @@ # endif # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should be defined in c++26" -# endif -# if __cpp_lib_atomic_ref != 201806L -# error "__cpp_lib_atomic_ref should have the value 201806L in c++26" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_atomic_ref +# error "__cpp_lib_atomic_ref should be defined in c++26" +# endif +# if __cpp_lib_atomic_ref != 201806L +# error "__cpp_lib_atomic_ref should have the value 201806L in c++26" # endif # if !defined(_LIBCPP_VERSION) diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py index d79892e140ebd4..e92b6613b11a89 100755 --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -184,7 +184,6 @@ def add_version_header(tc): "name": "__cpp_lib_atomic_ref", "values": {"c++20": 201806}, "headers": ["atomic"], - "unimplemented": True, }, { "name": "__cpp_lib_atomic_shared_ptr",