On Fri, Nov 22, 2013 at 12:27 PM, Dehao Chen <[email protected]> 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;