libstdc++: Use _GLIBCXX_USE_BUILTIN_TRAIT for _Nth_type

Message ID 20240110220813.2501087-1-ppalka@redhat.com
State Accepted
Headers
Series libstdc++: Use _GLIBCXX_USE_BUILTIN_TRAIT for _Nth_type |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Patrick Palka Jan. 10, 2024, 10:08 p.m. UTC
  Tested on x86_64-pc-linux-gnu, does this look OK for trunk?

-- >8 --

Since _Nth_type has a fallback native implementation, use
_GLIBCXX_USE_BUILTIN_TRAIT when deciding whether __type_pack_element
is available so that we can easily toggle which implementation
to use.

libstdc++-v3/ChangeLog:

	* include/bits/utility.h (_Nth_type): Use
	_GLIBCXX_USE_BUILTIN_TRAIT instead of __has_builtin.
---
 libstdc++-v3/include/bits/utility.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Jonathan Wakely Jan. 10, 2024, 11:27 p.m. UTC | #1
On Wed, 10 Jan 2024 at 22:08, Patrick Palka <ppalka@redhat.com> wrote:
>
> Tested on x86_64-pc-linux-gnu, does this look OK for trunk?

OK (thanks, this was on my TODO list).


> -- >8 --
>
> Since _Nth_type has a fallback native implementation, use
> _GLIBCXX_USE_BUILTIN_TRAIT when deciding whether __type_pack_element
> is available so that we can easily toggle which implementation
> to use.
  

Patch

diff --git a/libstdc++-v3/include/bits/utility.h b/libstdc++-v3/include/bits/utility.h
index 45d7241da9f..d8a5fb960fe 100644
--- a/libstdc++-v3/include/bits/utility.h
+++ b/libstdc++-v3/include/bits/utility.h
@@ -225,7 +225,7 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #endif // C++17
 
-#if __has_builtin(__type_pack_element)
+#if _GLIBCXX_USE_BUILTIN_TRAIT(__type_pack_element)
   template<size_t _Np, typename... _Types>
     struct _Nth_type
     { using type = __type_pack_element<_Np, _Types...>; };