> This patch rebuilds frequency after vrp. Why do you need to rebuild frequency after VRP? I always tought it may be useful to do VRP as early optimization (modulo to compile time costs), but I do not think we should unconditionally rebuild frequencies like this...
Honza > > Bootstrapped and testing on-going. OK for trunk if test pass? > > Thanks, > Dehao > > gcc/ChangeLog: > 2014-06-02 Dehao Chen <de...@google.com> > > PR tree-optimization/61384 > * tree-vrp.c (execute_vrp): rebuild frequency after vrp. > > gcc/testsuite/ChangeLog: > 2014-06-02 Dehao Chen <de...@google.com> > > PR tree-optimization/61384 > * gcc.dg/pr61384.c: New testcase. > > Index: gcc/testsuite/gcc.dg/pr61384.c > =================================================================== > --- gcc/testsuite/gcc.dg/pr61384.c (revision 0) > +++ gcc/testsuite/gcc.dg/pr61384.c (revision 0) > @@ -0,0 +1,32 @@ > +/* PR tree-optimization/61384 */ > +/* { dg-do compile } */ > +/* { dg-options "-O3" } */ > + > +int a, b, d, e, g, h; > +static int c = 1, f[5]; > + > +int > +fn1 (int p1, int p2) > +{ > + return p1 && p2 && p2; > +} > + > +void > +fn2 () > +{ > + for (d = 0; d < 1; d++) > + { > + g = f[0]; > + e = 0; > + h = fn1 (1, (a && c) ^ b); > + } > + for (; e < 5; e++) > + f[e] = 1; > +} > + > +int > +main () > +{ > + fn2 (); > + return 0; > +} > > Index: gcc/tree-vrp.c > =================================================================== > --- gcc/tree-vrp.c (revision 211137) > +++ gcc/tree-vrp.c (working copy) > @@ -9794,7 +9794,7 @@ execute_vrp (void) > > scev_finalize (); > loop_optimizer_finalize (); > - return 0; > + return TODO_rebuild_frequencies; > } > > namespace {