Most are within 10. The largest one I see is 17 across all benchmark. Dehao
On Fri, Oct 25, 2013 at 4:21 PM, Xinliang David Li <davi...@google.com> wrote: > What is the usual number of iterations? > > David > > On Fri, Oct 25, 2013 at 4:10 PM, Dehao Chen <de...@google.com> wrote: >> If the propagation finds an infinite look, if the in-edge count is >> non-zero, then it will cause compiler go into infinite loop when >> building with AutoFDO. >> >> Bootstrapped and regression test on-going. >> >> OK for google-4_8 branch? >> >> Thanks, >> Dehao >> >> Index: gcc/auto-profile.c >> =================================================================== >> --- gcc/auto-profile.c (revision 204027) >> +++ gcc/auto-profile.c (working copy) >> @@ -1287,6 +1287,7 @@ afdo_propagate (void) >> { >> basic_block bb; >> bool changed = true; >> + int i = 0; >> >> FOR_ALL_BB (bb) >> { >> @@ -1295,7 +1296,7 @@ afdo_propagate (void) >> bb->flags |= BB_ANNOTATED; >> } >> >> - while (changed) >> + while (changed && i++ < PARAM_VALUE >> (PARAM_AUTOFDO_MAX_PROPAGATE_ITERATIONS)) >> { >> changed = false; >> >> Index: gcc/params.def >> =================================================================== >> --- gcc/params.def (revision 204027) >> +++ gcc/params.def (working copy) >> @@ -460,6 +460,14 @@ DEFPARAM(PARAM_MAX_PREDICTED_ITERATIONS, >> "The maximum number of loop iterations we predict statically", >> 100, 0, 0) >> >> +/* This parameter controls the maximum iterations that AutoFDO profile >> + prpagation algorithm will run for a specific CFG. */ >> + >> +DEFPARAM(PARAM_AUTOFDO_MAX_PROPAGATE_ITERATIONS, >> + "max-autofdo-max-propagate-iterations", >> + "The maximum number of AutoFDO profile propagation iterations", >> + 1000, 0, 0) >> + >> /* This parameter controls the probability of builtin_expect. The default >> value is 90%. This empirical value is obtained through the weighted >> probability of FDO counters (with the FDO count value as the weight)