From: Jonathan Wakely Date: Fri, 3 May 2019 19:25:05 +0000 (+0100) Subject: Fix new testcase to not require std::copysign X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e339291fc13d074bade3fd9ab3cbfacce5a21cbd;p=gcc.git Fix new testcase to not require std::copysign Use __builtin_copysign{,f,l} when std::copysign isn't available. PR libstdc++/61761 * testsuite/26_numerics/complex/proj.cc: Don't assume defines std::copysign. From-SVN: r270859 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b1390142cb1..40396312a0c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,9 @@ 2019-05-03 Jonathan Wakely + PR libstdc++/61761 + * testsuite/26_numerics/complex/proj.cc: Don't assume defines + std::copysign. + PR libstdc++/52119 * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer overflow warning with -Wpedantic -Wsystem-headers. diff --git a/libstdc++-v3/testsuite/26_numerics/complex/proj.cc b/libstdc++-v3/testsuite/26_numerics/complex/proj.cc index b70ca4c58e9..caf12d25103 100644 --- a/libstdc++-v3/testsuite/26_numerics/complex/proj.cc +++ b/libstdc++-v3/testsuite/26_numerics/complex/proj.cc @@ -21,6 +21,22 @@ #include #include +namespace test +{ +#ifdef _GLIBCXX_USE_C99_MATH_TR1 + using std::copysign; +#else + bool copysign(float x, float y) + { return __builtin_copysignf(x, y); } + + bool copysign(double x, double y) + { return __builtin_copysign(x, y); } + + bool copysign(long double x, long double y) + { return __builtin_copysignl(x, y); } +#endif +} + template bool eq(const std::complex& x, const std::complex& y) { @@ -28,9 +44,9 @@ bool eq(const std::complex& x, const std::complex& y) bool nan_imags = std::isnan(x.imag()) && std::isnan(y.imag()); bool sign_reals - = std::copysign(T(1), x.real()) == std::copysign(T(1), y.real()); + = test::copysign(T(1), x.real()) == test::copysign(T(1), y.real()); bool sign_imags - = std::copysign(T(1), x.imag()) == std::copysign(T(1), y.imag()); + = test::copysign(T(1), x.imag()) == test::copysign(T(1), y.imag()); return ((x.real() == y.real() && sign_reals) || nan_reals) && ((x.imag() == y.imag() && sign_imags) || nan_imags);