[PATCH v26 01/13] libstdc++: Optimize std::is_const compilation performance
Jonathan Wakely
jwakely@redhat.com
Thu Jun 13 12:46:03 GMT 2024
On 23/05/24 15:15 -0700, Ken Matsui wrote:
>On Thu, May 23, 2024 at 3:15 PM Patrick Palka <ppalka@redhat.com> wrote:
>>
>> On Sat, 11 May 2024, Ken Matsui wrote:
>>
>> > This patch optimizes the compilation performance of std::is_const
>> > by dispatching to the new __is_const built-in trait.
>>
>> This patch series LGTM
>
>Thank you!
Patches 1, 2, 3, 4, 6, 7, 10, 11, 12, and 13 are approved for trunk.
I made some comments for 5 (is_pointer), 8 (add_lvalue_reference) and
9 (add_rvalue_reference).
>>
>> >
>> > libstdc++-v3/ChangeLog:
>> >
>> > * include/std/type_traits (is_const): Use __is_const built-in
>> > trait.
>> > (is_const_v): Likewise.
>> >
>> > Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
>> > ---
>> > libstdc++-v3/include/std/type_traits | 12 ++++++++++++
>> > 1 file changed, 12 insertions(+)
>> >
>> > diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
>> > index b441bf9908f..8df0cf3ac3b 100644
>> > --- a/libstdc++-v3/include/std/type_traits
>> > +++ b/libstdc++-v3/include/std/type_traits
>> > @@ -835,6 +835,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>> > // Type properties.
>> >
>> > /// is_const
>> > +#if _GLIBCXX_USE_BUILTIN_TRAIT(__is_const)
>> > + template<typename _Tp>
>> > + struct is_const
>> > + : public __bool_constant<__is_const(_Tp)>
>> > + { };
>> > +#else
>> > template<typename>
>> > struct is_const
>> > : public false_type { };
>> > @@ -842,6 +848,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>> > template<typename _Tp>
>> > struct is_const<_Tp const>
>> > : public true_type { };
>> > +#endif
>> >
>> > /// is_volatile
>> > template<typename>
>> > @@ -3331,10 +3338,15 @@ template <typename _Tp>
>> > inline constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value;
>> > #endif
>> >
>> > +#if _GLIBCXX_USE_BUILTIN_TRAIT(__is_const)
>> > +template <typename _Tp>
>> > + inline constexpr bool is_const_v = __is_const(_Tp);
>> > +#else
>> > template <typename _Tp>
>> > inline constexpr bool is_const_v = false;
>> > template <typename _Tp>
>> > inline constexpr bool is_const_v<const _Tp> = true;
>> > +#endif
>> >
>> > #if _GLIBCXX_USE_BUILTIN_TRAIT(__is_function)
>> > template <typename _Tp>
>> > --
>> > 2.44.0
>> >
>> >
>>
More information about the Libstdc++
mailing list