diff --git a/libcxx/include/__config b/libcxx/include/__config index a0b645c891fa70..ca7d9ed435442c 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -510,10 +510,6 @@ typedef __char32_t char32_t; #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 @@ typedef __char32_t char32_t; #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 index 0d060b6578dabe..af2f620ba94712 100644 --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -1914,7 +1914,7 @@ _LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool has_virtual_destructor_v // 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 # endif # define __cpp_lib_gcd_lcm 201606L // # define __cpp_lib_hardware_interference_size 201703L -# if defined(_LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS) -# define __cpp_lib_has_unique_object_representations 201606L -# endif +# define __cpp_lib_has_unique_object_representations 201606L # define __cpp_lib_hypot 201603L # define __cpp_lib_incomplete_container_elements 201505L # define __cpp_lib_invoke 201411L diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp index 1e270d3739fdc8..aefb00b849dd88 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp @@ -233,17 +233,11 @@ # error "__cpp_lib_bounded_array_traits should not be defined before 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++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 index 2c01e79f4bd0f7..03ed1cac8726b1 100644 --- 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 index 577faa3bbd190e..da3681fd779c70 100755 --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -323,8 +323,6 @@ def add_version_header(tc): "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 },