summaryrefslogtreecommitdiff
path: root/gcc/haifa-sched.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2017-07-04 15:42:22 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2017-07-04 13:42:22 +0000
commitcea768b0caa43d0957d752933bb43f3d73bfed69 (patch)
treeecd90f4cad54db5c8483a1a24d021d72c83f9ec9 /gcc/haifa-sched.c
parent4741e46d775429fe32086dd93ced7ea86644eba2 (diff)
* haifa-sched.c (sched_create_recovery_edges): Update profile.
From-SVN: r249967
Diffstat (limited to 'gcc/haifa-sched.c')
-rw-r--r--gcc/haifa-sched.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 9632a6d75db..af0ed27b18f 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -8302,7 +8302,19 @@ sched_create_recovery_edges (basic_block first_bb, basic_block rec,
else
edge_flags = 0;
- make_edge (first_bb, rec, edge_flags);
+ edge e2 = single_succ_edge (first_bb);
+ edge e = make_edge (first_bb, rec, edge_flags);
+
+ /* TODO: The actual probability can be determined and is computed as
+ 'todo_spec' variable in create_check_block_twin and
+ in sel-sched.c `check_ds' in create_speculation_check. */
+ e->probability = profile_probability::very_unlikely ();
+ e->count = first_bb->count.apply_probability (e->probability);
+ rec->count = e->count;
+ rec->frequency = EDGE_FREQUENCY (e);
+ e2->probability = e->probability.invert ();
+ e2->count = first_bb->count - e2->count;
+
rtx_code_label *label = block_label (second_bb);
rtx_jump_insn *jump = emit_jump_insn_after (targetm.gen_jump (label),
BB_END (rec));