Fixed by r11-2998, which fixed this ICE too.

Tested x86_64-pc-linux-gnu, applying to trunk.

        PR c++/90199
        * g++.dg/cpp1y/constexpr-90199.C: New test.
---
 gcc/testsuite/g++.dg/cpp1y/constexpr-90199.C | 28 ++++++++++++++++++++
 1 file changed, 28 insertions(+)
 create mode 100644 gcc/testsuite/g++.dg/cpp1y/constexpr-90199.C

diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-90199.C 
b/gcc/testsuite/g++.dg/cpp1y/constexpr-90199.C
new file mode 100644
index 00000000000..0e3f2be08d3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-90199.C
@@ -0,0 +1,28 @@
+// PR c++/90199
+// { dg-do compile { target c++14 } }
+// { dg-additional-options "-frounding-math" }
+
+template <typename>
+class complex;
+
+template <typename D7> constexpr complex<D7>
+operator+ (complex<D7> hd, complex<D7> qc)
+{
+  hd += qc;
+  return hd;
+}
+
+template <>
+class complex<float> {
+public:
+  constexpr complex
+  operator+= (complex rm)
+  {
+    jp += rm.jp;
+    return *this;
+  }
+
+  _Complex float jp;
+};
+
+constexpr complex<float> fl{3.3}, ka{1.1}, r0 = fl + ka;

base-commit: 9044db88d634c631920eaa9f66c0275adf18fdf5
-- 
2.26.2

Reply via email to