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

On Mon, Mar 1, 2010 at 12:02, changpeng dot fang at amd dot com
> I have a fix for this problem. We should not decrease the cost if the cost is
> infinite.
>

Looks good.  Thanks for fixing this.  Please test with the minor
modification below, and submit a patch to gcc-patches@

> diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
> index 74dadf7..9accda9 100644
> --- a/gcc/tree-ssa-loop-ivopts.c
> +++ b/gcc/tree-ssa-loop-ivopts.c
> @@ -4124,7 +4124,11 @@ determine_use_iv_cost_condition (struct ivopts_data
> *data,
>   if (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;
> +    {
> +      /* Should not decrease the cost if it is infinite */
> +      if (!infinite_cost_p (elim_cost))

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

> +        elim_cost.cost -= 1;
> +    }


-- 


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

Reply via email to