tracer.c (better_p): Do not compare frequencies.
authorJan Hubicka <hubicka@ucw.cz>
Tue, 14 Nov 2017 09:22:49 +0000 (10:22 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 14 Nov 2017 09:22:49 +0000 (09:22 +0000)
* tracer.c (better_p): Do not compare frequencies.
* reg-stack.c (better_edge): Likewise.
* shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts
and back.

From-SVN: r254726

gcc/ChangeLog
gcc/reg-stack.c
gcc/shrink-wrap.c
gcc/tracer.c

index 35cf703bd5199ee7b78be14ff0b8ced6733684d0..3aa83fec31a1e2ba78965db08cb852394db03482 100644 (file)
@@ -1,3 +1,10 @@
+2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
+
+       * tracer.c (better_p): Do not compare frequencies.
+       * reg-stack.c (better_edge): Likewise.
+       * shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts
+       and back.
+
 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
 
        * auto-profile.c (afdo_annotate_cfg): Use update_max_bb_count.
index 83fc47626710055d6540d027f07b06f37e9f8440..4f67a7bfa5076f17c0fc24bbf9772f5f8d7c8951 100644 (file)
@@ -2954,11 +2954,6 @@ better_edge (edge e1, edge e2)
   if (!e1)
     return e2;
 
-  if (EDGE_FREQUENCY (e1) > EDGE_FREQUENCY (e2))
-    return e1;
-  if (EDGE_FREQUENCY (e1) < EDGE_FREQUENCY (e2))
-    return e2;
-
   if (e1->count () > e2->count ())
     return e1;
   if (e1->count () < e2->count ())
index 0e4ff6cd46a028166a7eb07e90f491487e80b1ab..ce2ddfc09f783c9b3354649438760c19f4f9b735 100644 (file)
@@ -880,19 +880,18 @@ try_shrink_wrapping (edge *entry_edge, rtx_insn *prologue_seq)
      the correct answer for reducible flow graphs; for irreducible flow graphs
      our profile is messed up beyond repair anyway.  */
 
-  gcov_type num = 0;
-  gcov_type den = 0;
+  profile_count num = profile_count::zero ();
+  profile_count den = profile_count::zero ();
 
   FOR_EACH_EDGE (e, ei, pro->preds)
     if (!dominated_by_p (CDI_DOMINATORS, e->src, pro))
       {
-       num += EDGE_FREQUENCY (e);
-       den += e->src->count.to_frequency (cfun);
+       if (e->count ().initialized_p ())
+         num += e->count ();
+       if (e->src->count.initialized_p ())
+         den += e->src->count;
       }
 
-  if (den == 0)
-    den = 1;
-
   /* All is okay, so do it.  */
 
   crtl->shrink_wrapped = true;
@@ -919,8 +918,9 @@ try_shrink_wrapping (edge *entry_edge, rtx_insn *prologue_seq)
 
        if (dump_file)
          fprintf (dump_file, "Duplicated %d to %d\n", bb->index, dup->index);
-
-       bb->count = bb->count.apply_scale (num, den);
+       
+       if (num == profile_count::zero () || den.nonzero_p ())
+         bb->count = bb->count.apply_scale (num, den);
        dup->count -= bb->count;
       }
 
index 58caf13b0de6be4036a07653fd28069ac68ea6d1..0c7a9536735da4f4c5fa1eaf1258603809bcf53e 100644 (file)
@@ -135,8 +135,6 @@ better_p (const_edge e1, const_edge e2)
   if (e1->count ().initialized_p () && e2->count ().initialized_p ()
       && ((e1->count () > e2->count ()) || (e1->count () < e2->count  ())))
     return e1->count () > e2->count ();
-  if (EDGE_FREQUENCY (e1) != EDGE_FREQUENCY (e2))
-    return EDGE_FREQUENCY (e1) > EDGE_FREQUENCY (e2);
   /* This is needed to avoid changes in the decision after
      CFG is modified.  */
   if (e1->src != e2->src)