aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDehao Chen <dehao@google.com>2014-05-16 20:40:29 +0000
committerDehao Chen <dehao@gcc.gnu.org>2014-05-16 20:40:29 +0000
commitb0e66512ee26dec9b4e20b612bab88f6163fe48a (patch)
tree59a5a32e9cc23f9622626883d23a53b71387ac68
parent870c7fa03a0d97a77092fab5ab397b25ef1f6d6b (diff)
downloadgcc-b0e66512ee26dec9b4e20b612bab88f6163fe48a.zip
gcc-b0e66512ee26dec9b4e20b612bab88f6163fe48a.tar.gz
gcc-b0e66512ee26dec9b4e20b612bab88f6163fe48a.tar.bz2
cfghooks.c (make_forwarder_block): Use direct computation to get fall-through edge's count and frequency.
2014-05-16 Dehao Chen <dehao@google.com> * cfghooks.c (make_forwarder_block): Use direct computation to get fall-through edge's count and frequency. From-SVN: r210528
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cfghooks.c16
2 files changed, 11 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1db65a6..be8026a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-05-16 Dehao Chen <dehao@google.com>
+
+ * cfghooks.c (make_forwarder_block): Use direct computation to
+ get fall-through edge's count and frequency.
+
2014-02-07 Benno Schulenberg <bensberg@justemail.net>
* config/arc/arc.c (arc_init): Fix typo in error message.
diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c
index bc1634a..66313df 100644
--- a/gcc/cfghooks.c
+++ b/gcc/cfghooks.c
@@ -833,6 +833,9 @@ make_forwarder_block (basic_block bb, bool (*redirect_edge_p) (edge),
fallthru = split_block_after_labels (bb);
dummy = fallthru->src;
+ dummy->count = 0;
+ dummy->frequency = 0;
+ fallthru->count = 0;
bb = fallthru->dest;
/* Redirect back edges we want to keep. */
@@ -842,20 +845,13 @@ make_forwarder_block (basic_block bb, bool (*redirect_edge_p) (edge),
if (redirect_edge_p (e))
{
+ dummy->frequency += EDGE_FREQUENCY (e);
+ dummy->count += e->count;
+ fallthru->count += e->count;
ei_next (&ei);
continue;
}
- dummy->frequency -= EDGE_FREQUENCY (e);
- dummy->count -= e->count;
- if (dummy->frequency < 0)
- dummy->frequency = 0;
- if (dummy->count < 0)
- dummy->count = 0;
- fallthru->count -= e->count;
- if (fallthru->count < 0)
- fallthru->count = 0;
-
e_src = e->src;
jump = redirect_edge_and_branch_force (e, bb);
if (jump != NULL)