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 }, _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits