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 > + >