Ping?

On 10/04/14 06:07, Kugan wrote:
> Value range propagation simplifies convergence in vrp_visit_phi_node by
> setting minimum to TYPE_MIN when the computed minimum is smaller than
> the previous minimum. This can however result in pessimistic value
> ranges in some cases.
> 
> for example,
> 
>       unsigned int i;
>       for (i = 0; i < 8; i++)
>       {
>         ....
>       }
> 
>       # ivtmp_19 = PHI <ivtmp_17(5), 8(2)>
>       ...
>       <bb 5>:
>       ivtmp_17 = ivtmp_19 - 1;
>       if (ivtmp_17 != 0)
>       ....
>       goto <bb 5>;
> 
> min value of ivtmp_19  is simplified to 0 (in tree-vrp.c:8465) where as
> it should have been 1. This prevents correct value ranges being
> calculated for ivtmp_17 in the example.
> 
> We should be able to see the step (the difference from previous minimum
> to computed minimum) and if there is scope for more iterations (computed
> minimum is greater than step), and then we should be able set minimum to
> do one more iteration and converge to the right minimum value.
> 
> Attached patch fixes this. Is this OK for stage-1?
> 
> Bootstrapped and regression tested on X86_64-unknown-linux-gnu with no
> new regressions.
> 
> Thanks,
> Kugan
> 
> gcc/
> 
> +2014-04-09  Kugan Vivekanandarajah  <kug...@linaro.org>
> +
> +     * tree-vrp.c (vrp_visit_phi_node) : Improve value ranges of loop
> +     index when simplifying convergence towards minimum.
> +
> 
> gcc/testsuite
> 
> +2014-04-09  Kugan Vivekanandarajah  <kug...@linaro.org>
> +
> +     * gcc.dg/tree-ssa/vrp91.c: New test
> +
> 

Reply via email to