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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |pinskia at gcc dot 
gnu.org
             Status|NEW                         |ASSIGNED

--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This fixes the problem:
diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c
index 6b22f6bedd4..d96ca690d2f 100644
--- a/gcc/tree-ssa-phiopt.c
+++ b/gcc/tree-ssa-phiopt.c
@@ -1462,6 +1462,9 @@ value_replacement (basic_block cond_bb, basic_block
middle_bb,
       prep_stmt[prep_cnt] = g;
     }

+  if (!single_pred_p (middle_bb))
+    return 0;
+
   /* Only transform if it removes the condition.  */
   if (!single_non_singleton_phi_for_edges (phi_nodes (gimple_bb (phi)), e0,
e1))
     return 0;


I still need to test it a little bit.

Reply via email to