]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Fix test assumptions on long and long double
authorMatthias Kretz <m.kretz@gsi.de>
Thu, 25 May 2023 10:07:45 +0000 (12:07 +0200)
committerMatthias Kretz <m.kretz@gsi.de>
Tue, 30 May 2023 14:19:06 +0000 (16:19 +0200)
Expect that long might not fit into the long double mantissa bits.

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:

* testsuite/experimental/simd/tests/operator_cvt.cc: Make long
double <-> (u)long conversion tests conditional on sizeof(long
double) and sizeof(long).

libstdc++-v3/testsuite/experimental/simd/tests/operator_cvt.cc

index c1acfdf10e0809d0bb1a2f615b308be3ab929061..9b6cb38ff826d4980dbc97e9ba98c69e1cf6ec4c 100644 (file)
@@ -219,8 +219,6 @@ template <typename V>
        binary_op_return_type<vldouble, short>();
        binary_op_return_type<vldouble, ushort>();
        binary_op_return_type<vldouble, uint>();
-       binary_op_return_type<vldouble, long>();
-       binary_op_return_type<vldouble, ulong>();
        binary_op_return_type<vldouble, float>();
        binary_op_return_type<vldouble, double>();
 
@@ -230,8 +228,6 @@ template <typename V>
        binary_op_return_type<vf64<long double>, ushort>();
        binary_op_return_type<vf64<long double>, int>();
        binary_op_return_type<vf64<long double>, uint>();
-       binary_op_return_type<vf64<long double>, long>();
-       binary_op_return_type<vf64<long double>, ulong>();
        binary_op_return_type<vf64<long double>, float>();
        binary_op_return_type<vf64<long double>, double>();
        binary_op_return_type<vf64<long double>, vf64<long double>>();
@@ -244,8 +240,6 @@ template <typename V>
        binary_op_return_type<simd<long double, A>, ushort>();
        binary_op_return_type<simd<long double, A>, int>();
        binary_op_return_type<simd<long double, A>, uint>();
-       binary_op_return_type<simd<long double, A>, long>();
-       binary_op_return_type<simd<long double, A>, ulong>();
        binary_op_return_type<simd<long double, A>, float>();
        binary_op_return_type<simd<long double, A>, double>();
 
@@ -257,6 +251,24 @@ template <typename V>
            VERIFY((is_substitution_failure<vf64<ldouble>, ullong>));
            VERIFY((is_substitution_failure<simd<ldouble, A>, llong>));
            VERIFY((is_substitution_failure<simd<ldouble, A>, ullong>));
+           if constexpr (sizeof(long) == sizeof(llong))
+             {
+               VERIFY((is_substitution_failure<vldouble, long>));
+               VERIFY((is_substitution_failure<vldouble, ulong>));
+               VERIFY((is_substitution_failure<vf64<ldouble>, long>));
+               VERIFY((is_substitution_failure<vf64<ldouble>, ulong>));
+               VERIFY((is_substitution_failure<simd<ldouble, A>, long>));
+               VERIFY((is_substitution_failure<simd<ldouble, A>, ulong>));
+             }
+           else
+             {
+               binary_op_return_type<vldouble, long>();
+               binary_op_return_type<vldouble, ulong>();
+               binary_op_return_type<vf64<long double>, long>();
+               binary_op_return_type<vf64<long double>, ulong>();
+               binary_op_return_type<simd<long double, A>, long>();
+               binary_op_return_type<simd<long double, A>, ulong>();
+             }
          }
        else
          {
@@ -266,6 +278,12 @@ template <typename V>
            binary_op_return_type<vf64<long double>, ullong>();
            binary_op_return_type<simd<long double, A>, llong>();
            binary_op_return_type<simd<long double, A>, ullong>();
+           binary_op_return_type<vldouble, long>();
+           binary_op_return_type<vldouble, ulong>();
+           binary_op_return_type<vf64<long double>, long>();
+           binary_op_return_type<vf64<long double>, ulong>();
+           binary_op_return_type<simd<long double, A>, long>();
+           binary_op_return_type<simd<long double, A>, ulong>();
          }
 
        VERIFY((is_substitution_failure<vf64<long double>, vldouble>));