diff --git a/libcxx/include/__config b/libcxx/include/__config --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -510,10 +510,6 @@ #define _LIBCPP_COMPILER_HAS_BUILTIN_CONSTANT_P #endif -#if !__is_identifier(__has_unique_object_representations) -#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS -#endif - #define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) // Literal operators ""d and ""y are supported starting with LLVM Clang 8 and AppleClang 10.0.1 @@ -552,7 +548,6 @@ #if _GNUC_VER >= 700 #define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER #define _LIBCPP_COMPILER_HAS_BUILTIN_CONSTANT_P -#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS #endif #define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -1914,7 +1914,7 @@ // has_unique_object_representations -#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS) +#if _LIBCPP_STD_VER > 14 template struct _LIBCPP_TEMPLATE_VIS has_unique_object_representations : public integral_constant= 700 -# ifndef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should be defined in c++17" -# endif -# if __cpp_lib_has_unique_object_representations != 201606L -# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17" -# endif -# else -# ifdef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!" -# endif +# ifndef __cpp_lib_has_unique_object_representations +# error "__cpp_lib_has_unique_object_representations should be defined in c++17" +# endif +# if __cpp_lib_has_unique_object_representations != 201606L +# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17" # endif # ifndef __cpp_lib_integral_constant_callable @@ -363,17 +357,11 @@ # error "__cpp_lib_bounded_array_traits should have the value 201902L in c++20" # endif -# if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 -# ifndef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should be defined in c++20" -# endif -# if __cpp_lib_has_unique_object_representations != 201606L -# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20" -# endif -# else -# ifdef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!" -# endif +# ifndef __cpp_lib_has_unique_object_representations +# error "__cpp_lib_has_unique_object_representations should be defined in c++20" +# endif +# if __cpp_lib_has_unique_object_representations != 201606L +# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20" # endif # ifndef __cpp_lib_integral_constant_callable @@ -520,17 +508,11 @@ # error "__cpp_lib_bounded_array_traits should have the value 201902L in c++2b" # endif -# if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 -# ifndef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should be defined in c++2b" -# endif -# if __cpp_lib_has_unique_object_representations != 201606L -# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2b" -# endif -# else -# ifdef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!" -# endif +# ifndef __cpp_lib_has_unique_object_representations +# error "__cpp_lib_has_unique_object_representations should be defined in c++2b" +# endif +# if __cpp_lib_has_unique_object_representations != 201606L +# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2b" # endif # ifndef __cpp_lib_integral_constant_callable diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp @@ -1600,17 +1600,11 @@ # endif # endif -# if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 -# ifndef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should be defined in c++17" -# endif -# if __cpp_lib_has_unique_object_representations != 201606L -# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17" -# endif -# else -# ifdef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!" -# endif +# ifndef __cpp_lib_has_unique_object_representations +# error "__cpp_lib_has_unique_object_representations should be defined in c++17" +# endif +# if __cpp_lib_has_unique_object_representations != 201606L +# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17" # endif # ifndef __cpp_lib_hypot @@ -2613,17 +2607,11 @@ # endif # endif -# if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 -# ifndef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should be defined in c++20" -# endif -# if __cpp_lib_has_unique_object_representations != 201606L -# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20" -# endif -# else -# ifdef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!" -# endif +# ifndef __cpp_lib_has_unique_object_representations +# error "__cpp_lib_has_unique_object_representations should be defined in c++20" +# endif +# if __cpp_lib_has_unique_object_representations != 201606L +# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20" # endif # ifndef __cpp_lib_hypot @@ -3782,17 +3770,11 @@ # endif # endif -# if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 -# ifndef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should be defined in c++2b" -# endif -# if __cpp_lib_has_unique_object_representations != 201606L -# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2b" -# endif -# else -# ifdef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!" -# endif +# ifndef __cpp_lib_has_unique_object_representations +# error "__cpp_lib_has_unique_object_representations should be defined in c++2b" +# endif +# if __cpp_lib_has_unique_object_representations != 201606L +# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2b" # endif # ifndef __cpp_lib_hypot diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -323,8 +323,6 @@ "name": "__cpp_lib_has_unique_object_representations", "values": { "c++17": 201606 }, "headers": ["type_traits"], - "test_suite_guard": "TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700", - "libcxx_guard": "defined(_LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS)", }, { "name": "__cpp_lib_hypot", "values": { "c++17": 201603 },