[libcxx-commits] [libcxx] [libc++] Define the __cpp_lib_atomic_ref feature test macro (PR #98081)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jul 8 14:28:26 PDT 2024
https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/98081
We forgot to enable it when we landed std::atomic_ref in 42ba740aff.
>From 3637cea4c213c3437faf0737243512eb7cdf447e Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Mon, 8 Jul 2024 17:27:29 -0400
Subject: [PATCH] [libc++] Define the __cpp_lib_atomic_ref feature test macro
We forgot to enable it when we landed std::atomic_ref in 42ba740aff.
---
libcxx/docs/FeatureTestMacroTable.rst | 2 +-
libcxx/include/version | 2 +-
.../atomic.version.compile.pass.cpp | 48 ++++++-------------
.../version.version.compile.pass.cpp | 48 ++++++-------------
.../generate_feature_test_macro_components.py | 1 -
5 files changed, 32 insertions(+), 69 deletions(-)
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 <type_traits>
# 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",
More information about the libcxx-commits
mailing list