aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2017-10-07 16:33:26 +0000
committerJan Hubicka <hubicka@ucw.cz>2017-10-07 16:33:26 +0000
commit00dd138513ad66d2663ecabd3dc86f896e386a69 (patch)
tree14ae4b624d773b2658921551ba08e6575a3cb31d /gcc
parentb6e27eef4525db19acb967f1cf46f64fea34d7e4 (diff)
* tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns):
Update profile. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@253512 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-switch-conversion.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b56f7e637e0..e8e18d813b1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-06 Jan Hubicka <hubicka@ucw.cz>
+
+ * tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns):
+ Update profile.
+
2017-10-06 Martin Liska <mliska@suse.cz>
* sanopt.c (struct sanopt_tree_triplet_hash): Remove inline
diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c
index 6d7c2c4902f..19f0a73fbe2 100644
--- a/gcc/tree-switch-conversion.c
+++ b/gcc/tree-switch-conversion.c
@@ -2248,10 +2248,12 @@ do_jump_if_equal (basic_block bb, tree op0, tree op1, basic_block label_bb,
edge false_edge = split_block (bb, cond);
false_edge->flags = EDGE_FALSE_VALUE;
false_edge->probability = prob.invert ();
+ false_edge->count = bb->count.apply_probability (false_edge->probability);
edge true_edge = make_edge (bb, label_bb, EDGE_TRUE_VALUE);
fix_phi_operands_for_edge (true_edge, phi_mapping);
true_edge->probability = prob;
+ true_edge->count = bb->count.apply_probability (true_edge->probability);
return false_edge->dest;
}
@@ -2291,10 +2293,12 @@ emit_cmp_and_jump_insns (basic_block bb, tree op0, tree op1,
edge false_edge = split_block (bb, cond);
false_edge->flags = EDGE_FALSE_VALUE;
false_edge->probability = prob.invert ();
+ false_edge->count = bb->count.apply_probability (false_edge->probability);
edge true_edge = make_edge (bb, label_bb, EDGE_TRUE_VALUE);
fix_phi_operands_for_edge (true_edge, phi_mapping);
true_edge->probability = prob;
+ true_edge->count = bb->count.apply_probability (true_edge->probability);
return false_edge->dest;
}