aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/tree-call-cdce.c13
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1845cfc..58c772f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2012-09-28 Jan Hubicka <jh@suse.cz>
+ * tree-call-cdce.c (shrink_wrap_one_built_in_call): Update profile.
+
+2012-09-28 Jan Hubicka <jh@suse.cz>
+
* function.c (dup_block_and_redirect): Update profile.
2012-09-29 Andreas Tobler <andreast@fgznet.ch>
diff --git a/gcc/tree-call-cdce.c b/gcc/tree-call-cdce.c
index c879548..2a3fd87 100644
--- a/gcc/tree-call-cdce.c
+++ b/gcc/tree-call-cdce.c
@@ -773,8 +773,13 @@ shrink_wrap_one_built_in_call (gimple bi_call)
EDGE_FALSE_VALUE);
bi_call_in_edge0->probability = REG_BR_PROB_BASE * ERR_PROB;
+ bi_call_in_edge0->count =
+ apply_probability (guard_bb0->count,
+ bi_call_in_edge0->probability);
join_tgt_in_edge_fall_thru->probability =
- REG_BR_PROB_BASE - bi_call_in_edge0->probability;
+ inverse_probability (bi_call_in_edge0->probability);
+ join_tgt_in_edge_fall_thru->count =
+ guard_bb0->count - bi_call_in_edge0->count;
/* Code generation for the rest of the conditions */
guard_bb = guard_bb0;
@@ -804,8 +809,12 @@ shrink_wrap_one_built_in_call (gimple bi_call)
bi_call_in_edge = make_edge (guard_bb, bi_call_bb, EDGE_TRUE_VALUE);
bi_call_in_edge->probability = REG_BR_PROB_BASE * ERR_PROB;
+ bi_call_in_edge->count =
+ apply_probability (guard_bb->count,
+ bi_call_in_edge->probability);
guard_bb_in_edge->probability =
- REG_BR_PROB_BASE - bi_call_in_edge->probability;
+ inverse_probability (bi_call_in_edge->probability);
+ guard_bb_in_edge->count = guard_bb->count - bi_call_in_edge->count;
}
VEC_free (gimple, heap, conds);