diff options
author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-08-09 21:38:05 +0000 |
---|---|---|
committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-08-09 21:38:05 +0000 |
commit | 1ac94d7b038bb891f2b21ed11f0a18c695622f4d (patch) | |
tree | 7ae38294cb86d8e34fef9935718ea911d054b303 | |
parent | d8618a749ce8f61412c88f3fa0dc712122db2052 (diff) | |
download | gcc-1ac94d7b038bb891f2b21ed11f0a18c695622f4d.tar.gz |
Fix test for __has_unique_object_representations support in Clang
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251009 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/std/type_traits | 14 |
2 files changed, 14 insertions, 6 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index db0d38e78cb..8ebe21c9c11 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -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 diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index ee9c75bafbd..f021c42396c 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -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 |