https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117805

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
diff --git a/gcc/tree-complex.cc b/gcc/tree-complex.cc
index 7480c07640e..69786661a78 100644
--- a/gcc/tree-complex.cc
+++ b/gcc/tree-complex.cc
@@ -127,7 +127,8 @@ some_nonzerop (tree t)
   /* Operations with real or imaginary part of a complex number zero
      cannot be treated the same as operations with a real or imaginary
      operand if we care about the signs of zeros in the result.  */
-  if (TREE_CODE (t) == REAL_CST && !flag_signed_zeros)
+  if (TREE_CODE (t) == REAL_CST
+      && (!flag_signed_zeros || flag_complex_method < 2))
     zerop = real_identical (&TREE_REAL_CST (t), &dconst0);
   else if (TREE_CODE (t) == FIXED_CST)
     zerop = fixed_zerop (t);

does this for the purpose of optimizing zero component imag/real complex
ops.

Reply via email to