Fix test for __has_unique_object_representations support in Clang
authorJonathan Wakely <jwakely@redhat.com>
Wed, 9 Aug 2017 21:38:05 +0000 (22:38 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Wed, 9 Aug 2017 21:38:05 +0000 (22:38 +0100)
* include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP):
Replace with _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP and use
__is_identifier to set it.

From-SVN: r251009

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/type_traits

index db0d38e78cb98ea9885a96b9d06581885e17817d..8ebe21c9c11675656b1e54c83a27df19fcde910c 100644 (file)
@@ -1,3 +1,9 @@
+2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
+
+       * include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP):
+       Replace with _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP and use
+       __is_identifier to set it.
+
 2017-08-09  Katsuhiko Nishimra  <ktns.87@gmail.com>
 
        * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Use
index ee9c75bafbd3d2ee35f9021decc3a1a152fcc99e..f021c42396ccd19b25ae4706ed0dacb822fde5be 100644 (file)
@@ -2873,14 +2873,16 @@ template <typename _Base, typename _Derived>
 template <typename _From, typename _To>
   inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value;
 
-#ifdef __has_builtin
-# if !__has_builtin(__has_unique_object_representations)
-// Try not to break non-GNU compilers that don't support the built-in:
-#  define _GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP 1
+#if __GNUC__ >= 7
+# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1
+#elif defined(__is_identifier)
+// For non-GNU compilers:
+# if ! __is_identifier(__has_unique_object_representations)
+#  define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1
 # endif
 #endif
 
-#ifndef _GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP
+#ifdef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP
 # define __cpp_lib_has_unique_object_representations 201606
   /// has_unique_object_representations
   template<typename _Tp>
@@ -2890,7 +2892,7 @@ template <typename _From, typename _To>
       )>
     { };
 #endif
-#undef _GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP
+#undef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP
 
 #if __GNUC__ >= 7
 # define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1