[llvm-branch-commits] [libcxx] 544ac3d - [libc++][format] Enables feature-test macro.
Tom Stellard via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Aug 5 01:05:10 PDT 2022
Author: Mark de Wever
Date: 2022-08-05T01:04:08-07:00
New Revision: 544ac3d2cc4daf6a0e121f72021f413ef9802fa7
URL: https://github.com/llvm/llvm-project/commit/544ac3d2cc4daf6a0e121f72021f413ef9802fa7
DIFF: https://github.com/llvm/llvm-project/commit/544ac3d2cc4daf6a0e121f72021f413ef9802fa7.diff
LOG: [libc++][format] Enables feature-test macro.
The macro is only enabled when the Clang is used with
-fexperimental-library.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D130792
(cherry picked from commit 679169b7dd74c6f9161353f07e716ec25e80d1b8)
Added:
Modified:
libcxx/docs/FeatureTestMacroTable.rst
libcxx/include/version
libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
libcxx/utils/generate_feature_test_macro_components.py
Removed:
################################################################################
diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index 7ab2d6c0c6cbc..9aa183aff9fc5 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -234,7 +234,7 @@ Status
------------------------------------------------- -----------------
``__cpp_lib_execution`` *unimplemented*
------------------------------------------------- -----------------
- ``__cpp_lib_format`` *unimplemented*
+ ``__cpp_lib_format`` ``202106L``
------------------------------------------------- -----------------
``__cpp_lib_generic_unordered_lookup`` ``201811L``
------------------------------------------------- -----------------
diff --git a/libcxx/include/version b/libcxx/include/version
index 1df51fa1cb867..3ea1d8f768af6 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -331,8 +331,8 @@ __cpp_lib_void_t 201411L <type_traits>
# define __cpp_lib_erase_if 202002L
# undef __cpp_lib_execution
// # define __cpp_lib_execution 201902L
-# if !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format)
-// # define __cpp_lib_format 202106L
+# if !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)
+# define __cpp_lib_format 202106L
# endif
# define __cpp_lib_generic_unordered_lookup 201811L
# define __cpp_lib_int_pow2 202002L
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
index 7e183311bceca..dd995cd87e834 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp
@@ -44,31 +44,31 @@
#elif TEST_STD_VER == 20
-# if !defined(_LIBCPP_VERSION)
+# if !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)
# ifndef __cpp_lib_format
# error "__cpp_lib_format should be defined in c++20"
# endif
# if __cpp_lib_format != 202106L
# error "__cpp_lib_format should have the value 202106L in c++20"
# endif
-# else // _LIBCPP_VERSION
+# else
# ifdef __cpp_lib_format
-# error "__cpp_lib_format should not be defined because it is unimplemented in libc++!"
+# error "__cpp_lib_format should not be defined when !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) is not defined!"
# endif
# endif
#elif TEST_STD_VER > 20
-# if !defined(_LIBCPP_VERSION)
+# if !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)
# ifndef __cpp_lib_format
# error "__cpp_lib_format should be defined in c++2b"
# endif
# if __cpp_lib_format != 202106L
# error "__cpp_lib_format should have the value 202106L in c++2b"
# endif
-# else // _LIBCPP_VERSION
+# else
# ifdef __cpp_lib_format
-# error "__cpp_lib_format should not be defined because it is unimplemented in libc++!"
+# error "__cpp_lib_format should not be defined when !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) is not defined!"
# endif
# endif
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 60ee762678dd7..dcf8ce8f4158b 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
@@ -2817,16 +2817,16 @@
# endif
# endif
-# if !defined(_LIBCPP_VERSION)
+# if !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)
# ifndef __cpp_lib_format
# error "__cpp_lib_format should be defined in c++20"
# endif
# if __cpp_lib_format != 202106L
# error "__cpp_lib_format should have the value 202106L in c++20"
# endif
-# else // _LIBCPP_VERSION
+# else
# ifdef __cpp_lib_format
-# error "__cpp_lib_format should not be defined because it is unimplemented in libc++!"
+# error "__cpp_lib_format should not be defined when !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) is not defined!"
# endif
# endif
@@ -4054,16 +4054,16 @@
# endif
# endif
-# if !defined(_LIBCPP_VERSION)
+# if !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)
# ifndef __cpp_lib_format
# error "__cpp_lib_format should be defined in c++2b"
# endif
# if __cpp_lib_format != 202106L
# error "__cpp_lib_format should have the value 202106L in c++2b"
# endif
-# else // _LIBCPP_VERSION
+# else
# ifdef __cpp_lib_format
-# error "__cpp_lib_format should not be defined because it is unimplemented in libc++!"
+# error "__cpp_lib_format should not be defined when !defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) is not defined!"
# endif
# endif
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index 23f6aeeb2d355..6b8db98242f29 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -311,9 +311,8 @@ def add_version_header(tc):
"name": "__cpp_lib_format",
"values": { "c++20": 202106 },
"headers": ["format"],
- "test_suite_guard": "!defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format)",
- "libcxx_guard": "!defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format)",
- "unimplemented": True,
+ "test_suite_guard": "!defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)",
+ "libcxx_guard": "!defined(_LIBCPP_AVAILABILITY_DISABLE_FTM___cpp_lib_format) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)",
}, {
"name": "__cpp_lib_gcd_lcm",
"values": { "c++17": 201606 },
More information about the llvm-branch-commits
mailing list