------- Comment #7 from sebpop at gmail dot com  2010-03-01 18:21 -------
Subject: Re:  [4.5 Regression] ICE in 
        try_improve_iv_set, at tree-ssa-loop-ivopts.c:5238

> You should fuse this condition into the previous condition expression
> to avoid the inner if.

Like this:

diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 74dadf7..3b766ed 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -4121,7 +4121,8 @@ determine_use_iv_cost_condition (struct ivopts_data
*data,
      TODO: The constant that we're substracting from the cost should
      be target-dependent.  This information should be added to the
      target costs for each backend.  */
-  if (integer_zerop (*bound_cst)
+  if (!infinite_cost_p (elim_cost)
+      && integer_zerop (*bound_cst)
       && (operand_equal_p (*control_var, cand->var_after, 0)
          || operand_equal_p (*control_var, cand->var_before, 0)))
     elim_cost.cost -= 1;


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43209

Reply via email to