aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-06-19 11:19:58 +0100
committerJonathan Wakely <jwakely@redhat.com>2024-06-21 17:07:00 +0100
commit139d65d1f5a60ac90479653a4f9b63618509f3f9 (patch)
tree2c07aeff587c5d596f02a23b644edd38ac8b54be
parentb3743181899c5490a94c4dbde56a69ab77a40f11 (diff)
downloadgcc-139d65d1f5a60ac90479653a4f9b63618509f3f9.zip
gcc-139d65d1f5a60ac90479653a4f9b63618509f3f9.tar.gz
gcc-139d65d1f5a60ac90479653a4f9b63618509f3f9.tar.bz2
libstdc++: Don't use std::__is_scalar in std::valarray initialization [PR115497]
This removes the use of the std::__is_scalar trait from <valarray>, where it can be replaced by __is_trivial. It's used to decide whether we can use memset to value-initialize valarray elements, but memset is suitable for any trivial types, because value-initializing them is equivalent to filling them with zeros. This is another step towards removing the class templates in <bits/cpp_type_traits.h> that conflict with Clang built-in names. libstdc++-v3/ChangeLog: PR libstdc++/115497 * include/bits/valarray_array.h (__valarray_default_construct): Use __is_trivial(_Tp). instead of __is_scalar<_Tp>.
-rw-r--r--libstdc++-v3/include/bits/valarray_array.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/libstdc++-v3/include/bits/valarray_array.h b/libstdc++-v3/include/bits/valarray_array.h
index 66b74f9..07c49ce 100644
--- a/libstdc++-v3/include/bits/valarray_array.h
+++ b/libstdc++-v3/include/bits/valarray_array.h
@@ -80,7 +80,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp>
struct _Array_default_ctor<_Tp, true>
{
- // For fundamental types, it suffices to say 'memset()'
+ // For trivial types, it suffices to say 'memset()'
inline static void
_S_do_it(_Tp* __b, _Tp* __e)
{ __builtin_memset(__b, 0, (__e - __b) * sizeof(_Tp)); }
@@ -90,7 +90,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
inline void
__valarray_default_construct(_Tp* __b, _Tp* __e)
{
- _Array_default_ctor<_Tp, __is_scalar<_Tp>::__value>::_S_do_it(__b, __e);
+ _Array_default_ctor<_Tp, __is_trivial(_Tp)>::_S_do_it(__b, __e);
}
// Turn a raw-memory into an array of _Tp filled with __t