[v2,2/2] libstdc++: use new built-in trait __is_scalar for std::is_scalar
Checks
Commit Message
This patch gets std::is_scalar to dispatch to new built-in trait
__is_scalar.
libstdc++-v3/ChangeLog:
* include/std/type_traits (is_scalar): Use __is_scalar built-in
trait.
(is_scalar_v): Likewise.
Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
---
libstdc++-v3/include/std/type_traits | 14 ++++++++++++++
1 file changed, 14 insertions(+)
Comments
On Sat, 8 Jul 2023 at 05:47, Ken Matsui via Libstdc++
<libstdc++@gcc.gnu.org> wrote:
>
> This patch gets std::is_scalar to dispatch to new built-in trait
> __is_scalar.
>
> libstdc++-v3/ChangeLog:
>
> * include/std/type_traits (is_scalar): Use __is_scalar built-in
> trait.
> (is_scalar_v): Likewise.
OK for trunk (conditional on the front-end change being committed
first of course).
>
> Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
> ---
> libstdc++-v3/include/std/type_traits | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
> index 0e7a9c9c7f3..bc90b2c61ca 100644
> --- a/libstdc++-v3/include/std/type_traits
> +++ b/libstdc++-v3/include/std/type_traits
> @@ -678,11 +678,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> struct is_member_pointer;
>
> /// is_scalar
> +#if __has_builtin(__is_scalar)
> + template<typename _Tp>
> + struct is_scalar
> + : public __bool_constant<__is_scalar(_Tp)>
> + { };
> +#else
> template<typename _Tp>
> struct is_scalar
> : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
> is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
> { };
> +#endif
>
> /// is_compound
> template<typename _Tp>
> @@ -3204,8 +3211,15 @@ template <typename _Tp>
> inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
> template <typename _Tp>
> inline constexpr bool is_object_v = is_object<_Tp>::value;
> +
> +#if __has_builtin(__is_scalar)
> +template <typename _Tp>
> + inline constexpr bool is_scalar_v = __is_scalar(_Tp);
> +#else
> template <typename _Tp>
> inline constexpr bool is_scalar_v = is_scalar<_Tp>::value;
> +#endif
> +
> template <typename _Tp>
> inline constexpr bool is_compound_v = is_compound<_Tp>::value;
> template <typename _Tp>
> --
> 2.41.0
>
On Wed, Jul 12, 2023 at 2:50 AM Jonathan Wakely <jwakely@redhat.com> wrote:
>
> On Sat, 8 Jul 2023 at 05:47, Ken Matsui via Libstdc++
> <libstdc++@gcc.gnu.org> wrote:
> >
> > This patch gets std::is_scalar to dispatch to new built-in trait
> > __is_scalar.
> >
> > libstdc++-v3/ChangeLog:
> >
> > * include/std/type_traits (is_scalar): Use __is_scalar built-in
> > trait.
> > (is_scalar_v): Likewise.
>
> OK for trunk (conditional on the front-end change being committed
> first of course).
>
Thank you for your review!
Just to confirm, this approval does not include the [1/2] patch, does
it? Or, did you approve this entire patch series?
> conditional on the front-end change being committed first of course
Does this mean we want to commit this [2/2] patch before committing
the [1/2] patch in this case?
Also, can I tweak the commit message without being approved again,
such as attaching the benchmark result?
> >
> > Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
> > ---
> > libstdc++-v3/include/std/type_traits | 14 ++++++++++++++
> > 1 file changed, 14 insertions(+)
> >
> > diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
> > index 0e7a9c9c7f3..bc90b2c61ca 100644
> > --- a/libstdc++-v3/include/std/type_traits
> > +++ b/libstdc++-v3/include/std/type_traits
> > @@ -678,11 +678,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> > struct is_member_pointer;
> >
> > /// is_scalar
> > +#if __has_builtin(__is_scalar)
> > + template<typename _Tp>
> > + struct is_scalar
> > + : public __bool_constant<__is_scalar(_Tp)>
> > + { };
> > +#else
> > template<typename _Tp>
> > struct is_scalar
> > : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
> > is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
> > { };
> > +#endif
> >
> > /// is_compound
> > template<typename _Tp>
> > @@ -3204,8 +3211,15 @@ template <typename _Tp>
> > inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
> > template <typename _Tp>
> > inline constexpr bool is_object_v = is_object<_Tp>::value;
> > +
> > +#if __has_builtin(__is_scalar)
> > +template <typename _Tp>
> > + inline constexpr bool is_scalar_v = __is_scalar(_Tp);
> > +#else
> > template <typename _Tp>
> > inline constexpr bool is_scalar_v = is_scalar<_Tp>::value;
> > +#endif
> > +
> > template <typename _Tp>
> > inline constexpr bool is_compound_v = is_compound<_Tp>::value;
> > template <typename _Tp>
> > --
> > 2.41.0
> >
>
On Wed, 2023-07-12 at 11:32 -0700, Ken Matsui via Gcc-patches wrote:
> > conditional on the front-end change being committed first of course
>
> Does this mean we want to commit this [2/2] patch before committing
> the [1/2] patch in this case?
No, this mean you should get 1/2 reviewed and committed first.
> Also, can I tweak the commit message without being approved again,
> such as attaching the benchmark result?
Yes, as long as the ChangeLog is still correct (the Git hook will reject
a push with wrong ChangeLog format anyway).
On Wed, Jul 12, 2023 at 11:56 AM Xi Ruoyao <xry111@xry111.site> wrote:
>
> On Wed, 2023-07-12 at 11:32 -0700, Ken Matsui via Gcc-patches wrote:
> > > conditional on the front-end change being committed first of course
> >
> > Does this mean we want to commit this [2/2] patch before committing
> > the [1/2] patch in this case?
>
> No, this mean you should get 1/2 reviewed and committed first.
>
> > Also, can I tweak the commit message without being approved again,
> > such as attaching the benchmark result?
>
> Yes, as long as the ChangeLog is still correct (the Git hook will reject
> a push with wrong ChangeLog format anyway).
I see. Thank you so much!
> --
> Xi Ruoyao <xry111@xry111.site>
> School of Aerospace Science and Technology, Xidian University
On Wed, 12 Jul 2023, 19:33 Ken Matsui via Libstdc++, <libstdc++@gcc.gnu.org>
wrote:
> On Wed, Jul 12, 2023 at 2:50 AM Jonathan Wakely <jwakely@redhat.com>
> wrote:
> >
> > On Sat, 8 Jul 2023 at 05:47, Ken Matsui via Libstdc++
> > <libstdc++@gcc.gnu.org> wrote:
> > >
> > > This patch gets std::is_scalar to dispatch to new built-in trait
> > > __is_scalar.
> > >
> > > libstdc++-v3/ChangeLog:
> > >
> > > * include/std/type_traits (is_scalar): Use __is_scalar built-in
> > > trait.
> > > (is_scalar_v): Likewise.
> >
> > OK for trunk (conditional on the front-end change being committed
> > first of course).
> >
>
> Thank you for your review!
>
> Just to confirm, this approval does not include the [1/2] patch, does
> it? Or, did you approve this entire patch series?
>
Only this patch. I cannot approve compiler changes, I'm only a reviewer for
libstdc++.
> > conditional on the front-end change being committed first of course
>
> Does this mean we want to commit this [2/2] patch before committing
> the [1/2] patch in this case?
>
The other way around, as Xi Ruoyao said.
> Also, can I tweak the commit message without being approved again,
> such as attaching the benchmark result?
>
Yes, that's fine.
> > >
> > > Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
> > > ---
> > > libstdc++-v3/include/std/type_traits | 14 ++++++++++++++
> > > 1 file changed, 14 insertions(+)
> > >
> > > diff --git a/libstdc++-v3/include/std/type_traits
> b/libstdc++-v3/include/std/type_traits
> > > index 0e7a9c9c7f3..bc90b2c61ca 100644
> > > --- a/libstdc++-v3/include/std/type_traits
> > > +++ b/libstdc++-v3/include/std/type_traits
> > > @@ -678,11 +678,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> > > struct is_member_pointer;
> > >
> > > /// is_scalar
> > > +#if __has_builtin(__is_scalar)
> > > + template<typename _Tp>
> > > + struct is_scalar
> > > + : public __bool_constant<__is_scalar(_Tp)>
> > > + { };
> > > +#else
> > > template<typename _Tp>
> > > struct is_scalar
> > > : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
> > > is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
> > > { };
> > > +#endif
> > >
> > > /// is_compound
> > > template<typename _Tp>
> > > @@ -3204,8 +3211,15 @@ template <typename _Tp>
> > > inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
> > > template <typename _Tp>
> > > inline constexpr bool is_object_v = is_object<_Tp>::value;
> > > +
> > > +#if __has_builtin(__is_scalar)
> > > +template <typename _Tp>
> > > + inline constexpr bool is_scalar_v = __is_scalar(_Tp);
> > > +#else
> > > template <typename _Tp>
> > > inline constexpr bool is_scalar_v = is_scalar<_Tp>::value;
> > > +#endif
> > > +
> > > template <typename _Tp>
> > > inline constexpr bool is_compound_v = is_compound<_Tp>::value;
> > > template <typename _Tp>
> > > --
> > > 2.41.0
> > >
> >
>
On Wed, Jul 12, 2023 at 12:23 PM Jonathan Wakely <jwakely.gcc@gmail.com> wrote:
>
>
>
> On Wed, 12 Jul 2023, 19:33 Ken Matsui via Libstdc++, <libstdc++@gcc.gnu.org> wrote:
>>
>> On Wed, Jul 12, 2023 at 2:50 AM Jonathan Wakely <jwakely@redhat.com> wrote:
>> >
>> > On Sat, 8 Jul 2023 at 05:47, Ken Matsui via Libstdc++
>> > <libstdc++@gcc.gnu.org> wrote:
>> > >
>> > > This patch gets std::is_scalar to dispatch to new built-in trait
>> > > __is_scalar.
>> > >
>> > > libstdc++-v3/ChangeLog:
>> > >
>> > > * include/std/type_traits (is_scalar): Use __is_scalar built-in
>> > > trait.
>> > > (is_scalar_v): Likewise.
>> >
>> > OK for trunk (conditional on the front-end change being committed
>> > first of course).
>> >
>>
>> Thank you for your review!
>>
>> Just to confirm, this approval does not include the [1/2] patch, does
>> it? Or, did you approve this entire patch series?
>
>
> Only this patch. I cannot approve compiler changes, I'm only a reviewer for libstdc++.
>
>
>>
>> > conditional on the front-end change being committed first of course
>>
>> Does this mean we want to commit this [2/2] patch before committing
>> the [1/2] patch in this case?
>
>
> The other way around, as Xi Ruoyao said.
>
>
>>
>> Also, can I tweak the commit message without being approved again,
>> such as attaching the benchmark result?
>
>
> Yes, that's fine.
Thank you!
>>
>> > >
>> > > Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
>> > > ---
>> > > libstdc++-v3/include/std/type_traits | 14 ++++++++++++++
>> > > 1 file changed, 14 insertions(+)
>> > >
>> > > diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
>> > > index 0e7a9c9c7f3..bc90b2c61ca 100644
>> > > --- a/libstdc++-v3/include/std/type_traits
>> > > +++ b/libstdc++-v3/include/std/type_traits
>> > > @@ -678,11 +678,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>> > > struct is_member_pointer;
>> > >
>> > > /// is_scalar
>> > > +#if __has_builtin(__is_scalar)
>> > > + template<typename _Tp>
>> > > + struct is_scalar
>> > > + : public __bool_constant<__is_scalar(_Tp)>
>> > > + { };
>> > > +#else
>> > > template<typename _Tp>
>> > > struct is_scalar
>> > > : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
>> > > is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
>> > > { };
>> > > +#endif
>> > >
>> > > /// is_compound
>> > > template<typename _Tp>
>> > > @@ -3204,8 +3211,15 @@ template <typename _Tp>
>> > > inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
>> > > template <typename _Tp>
>> > > inline constexpr bool is_object_v = is_object<_Tp>::value;
>> > > +
>> > > +#if __has_builtin(__is_scalar)
>> > > +template <typename _Tp>
>> > > + inline constexpr bool is_scalar_v = __is_scalar(_Tp);
>> > > +#else
>> > > template <typename _Tp>
>> > > inline constexpr bool is_scalar_v = is_scalar<_Tp>::value;
>> > > +#endif
>> > > +
>> > > template <typename _Tp>
>> > > inline constexpr bool is_compound_v = is_compound<_Tp>::value;
>> > > template <typename _Tp>
>> > > --
>> > > 2.41.0
>> > >
>> >
@@ -678,11 +678,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
struct is_member_pointer;
/// is_scalar
+#if __has_builtin(__is_scalar)
+ template<typename _Tp>
+ struct is_scalar
+ : public __bool_constant<__is_scalar(_Tp)>
+ { };
+#else
template<typename _Tp>
struct is_scalar
: public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
{ };
+#endif
/// is_compound
template<typename _Tp>
@@ -3204,8 +3211,15 @@ template <typename _Tp>
inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_object_v = is_object<_Tp>::value;
+
+#if __has_builtin(__is_scalar)
+template <typename _Tp>
+ inline constexpr bool is_scalar_v = __is_scalar(_Tp);
+#else
template <typename _Tp>
inline constexpr bool is_scalar_v = is_scalar<_Tp>::value;
+#endif
+
template <typename _Tp>
inline constexpr bool is_compound_v = is_compound<_Tp>::value;
template <typename _Tp>