From c86fab9d08853121dfe3d001b973af1e1c44fddd Mon Sep 17 00:00:00 2001
From: Jonathan Wakely <jwakely@redhat.com>
Date: Wed, 9 Jan 2019 09:37:34 +0000
Subject: [PATCH] PR libstdc++/88204 disable std::complex<long double> tests

The IBM128 long double format isn't foldable in constant expressions, so
conditionally skip the std::complex<long double> cases when they'll
fail.

	PR libstdc++/88204
	* testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
	test std::complex<long double> if long double format is IBM128.
	* testsuite/26_numerics/complex/requirements/more_constexpr.cc:
	Likewise.

From-SVN: r267757
---
 libstdc++-v3/ChangeLog                                    | 8 ++++++++
 .../26_numerics/complex/operators/more_constexpr.cc       | 2 ++
 .../26_numerics/complex/requirements/more_constexpr.cc    | 3 ++-
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index f1aa1c326d79..870fce269e66 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2019-01-09  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/88204
+	* testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
+	test std::complex<long double> if long double format is IBM128.
+	* testsuite/26_numerics/complex/requirements/more_constexpr.cc:
+	Likewise.
+
 2019-01-08  Jonathan Wakely  <jwakely@redhat.com>
 
 	* testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
diff --git a/libstdc++-v3/testsuite/26_numerics/complex/operators/more_constexpr.cc b/libstdc++-v3/testsuite/26_numerics/complex/operators/more_constexpr.cc
index 725e789d3342..3def7db25510 100644
--- a/libstdc++-v3/testsuite/26_numerics/complex/operators/more_constexpr.cc
+++ b/libstdc++-v3/testsuite/26_numerics/complex/operators/more_constexpr.cc
@@ -56,7 +56,9 @@ int main()
 {
   __gnu_test::test_operators<float>();
   __gnu_test::test_operators<double>();
+#ifndef __LONG_DOUBLE_IBM128__ // IBM128 format is not constexpr foldable
   __gnu_test::test_operators<long double>();
+#endif
 
   return 0;
 }
diff --git a/libstdc++-v3/testsuite/26_numerics/complex/requirements/more_constexpr.cc b/libstdc++-v3/testsuite/26_numerics/complex/requirements/more_constexpr.cc
index 4b17d421023f..670378dc0c30 100644
--- a/libstdc++-v3/testsuite/26_numerics/complex/requirements/more_constexpr.cc
+++ b/libstdc++-v3/testsuite/26_numerics/complex/requirements/more_constexpr.cc
@@ -23,7 +23,6 @@
 
 namespace __gnu_test
 {
-
   // Test constexpr real(val) imag(val).
   template<typename _Tp, const int _Val = 42>
     inline void
@@ -160,9 +159,11 @@ int main()
   __gnu_test::test_operator_members<double, float>();
   __gnu_test::test_operator_members<double, double>();
   __gnu_test::test_operator_members<double, long double>();
+#ifndef __LONG_DOUBLE_IBM128__ // IBM128 format is not constexpr foldable
   __gnu_test::test_operator_members<long double, float>();
   __gnu_test::test_operator_members<long double, double>();
   __gnu_test::test_operator_members<long double, long double>();
+#endif
 
 #if defined(_GLIBCXX_USE_FLOAT128)
   // Test primary template.
-- 
GitLab