This patch removes the zero_edge heuristic during profile propagation.
The zero_edge heuristic does not seem to be effective in improving
performance.

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;

Reply via email to