On Fri, 11 Jan 2013, Jakub Jelinek wrote:

> On Fri, Jan 11, 2013 at 12:06:04PM +0100, Richard Biener wrote:
> > 
> > VRP no longer (since 4.1.2 at least) can optimize vrp06.c in one go
> > because we happen to chose a symbolic range when
> 
> Just FYI, GCC never optimized that apparently, at least in r100000
> (vrp06.c has been added in r100478) vrp didn't fold any of the 3 foldings
> looked for by the testcase, and in r102000 it folded just the first 2 and
> not the third (and from that point onwards), don't have anything in between
> though.

The SLE10 gcc 4.1 based compiler folds the last test to i_1 != i_16
which then cfgcleanup figures out as false.

So it worked in some sense (that is, there is a regression).

> > *** gcc/testsuite/gcc.dg/tree-ssa/vrp06.c   (revision 195103)
> > --- gcc/testsuite/gcc.dg/tree-ssa/vrp06.c   (working copy)
> > *************** foo (int i, int j, int a)
> > *** 27,31 ****
> >   
> >   /* { dg-final { scan-tree-dump-times "Folding predicate i_\[0-9\]+.*0 to 
> > 0" 1 "vrp1" } } */
> >   /* { dg-final { scan-tree-dump-times "Folding predicate j_\[0-9\]+.*0 to 
> > 1" 1 "vrp1" } } */
> > ! /* { dg-final { scan-tree-dump-times "Folding predicate 
> > i_\[0-9]+.*j_\[0-9\]+.* to 0" 1 "vrp1" { xfail *-*-* } } } */
> >   /* { dg-final { cleanup-tree-dump "vrp1" } } */
> > --- 27,31 ----
> >   
> >   /* { dg-final { scan-tree-dump-times "Folding predicate i_\[0-9\]+.*0 to 
> > 0" 1 "vrp1" } } */
> >   /* { dg-final { scan-tree-dump-times "Folding predicate j_\[0-9\]+.*0 to 
> > 1" 1 "vrp1" } } */
> > ! /* { dg-final { scan-tree-dump-times "Folding predicate 
> > i_\[0-9]+.*j_\[0-9\]+.* to 0" 1 "vrp1" } } */
> >   /* { dg-final { cleanup-tree-dump "vrp1" } } */
> 
> If you are changing the testcase again, please replace all .* with \[^\n\r\]* 
> ,
> so that it doesn't match 0 to 0 etc. from different lines.

Ok.

Richard.

Reply via email to