On Fri, Nov 22, 2013 at 12:27 PM, Dehao Chen <de...@google.com> wrote: > This patch removes the zero_edge heuristic during profile propagation. > The zero_edge heuristic does not seem to be effective in improving > performance.
"not effective" here means degrading performance? David > > Tested: > Bootstrapped and passed regression test and performance test. > > OK for google-4_8? > > Thanks, > Dehao > > Index: gcc/auto-profile.c > =================================================================== > --- gcc/auto-profile.c (revision 205232) > +++ gcc/auto-profile.c (working copy) > @@ -1122,7 +1122,7 @@ afdo_propagate_multi_edge (bool is_succ) > > FOR_EACH_BB (bb) > { > - edge e, unknown_edge = NULL, zero_edge = NULL; > + edge e, unknown_edge = NULL; > edge_iterator ei; > int num_unknown_edge = 0; > gcov_type total_known_count = 0; > @@ -1132,8 +1132,6 @@ afdo_propagate_multi_edge (bool is_succ) > FOR_EACH_EDGE (e, ei, bb->succs) > if ((e->flags & EDGE_ANNOTATED) == 0) > num_unknown_edge ++, unknown_edge = e; > - else if (e->count == 0) > - zero_edge = e; > else > total_known_count += e->count; > } > @@ -1153,12 +1151,6 @@ afdo_propagate_multi_edge (bool is_succ) > bb->count = total_known_count; > changed = true; > } > - else if (zero_edge != NULL && total_known_count < bb->count > - && bb->loop_father && bb->loop_father->header == bb) > - { > - zero_edge->count = bb->count - total_known_count; > - changed = true; > - } > if ((bb->flags & BB_ANNOTATED) == 0) > { > bb->flags |= BB_ANNOTATED;