summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-ivcanon.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2017-07-01 22:46:40 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2017-07-01 20:46:40 +0000
commitaf2bbc51d3879b6e7a03b4dc2d4ab017a98270ba (patch)
tree7af6a2ca2adedc6bef10ea8e3c46425031abf858 /gcc/tree-ssa-loop-ivcanon.c
parente39df5466d0cde13fd47e612f20ef2b0ac117e2b (diff)
cfg.c (scale_bbs_frequencies): New function.
* cfg.c (scale_bbs_frequencies): New function. * cfg.h (scale_bbs_frequencies): Declare it. * cfgloopanal.c (single_likely_exit): Cleanup. * cfgloopmanip.c (scale_loop_frequencies): Take profile_probability as parameter. (scale_loop_profile): Likewise. (loop_version): Likewise. (create_empty_loop_on_edge): Update. * cfgloopmanip.h (scale_loop_frequencies, scale_loop_profile, scale_loop_frequencies, scale_loop_profile, loopify, loop_version): Update prototypes. * modulo-sched.c (sms_schedule): Update. * predict.c (unlikely_executed_edge_p): Also check probability. (probably_never_executed_edge_p): Fix typo. * tree-if-conv.c (version_loop_for_if_conversion): Update. * tree-parloops.c (gen_parallel_loop): Update. * tree-ssa-loop-ivcanon.c (try_peel_loop): Update. * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. * tree-ssa-loop-split.c (split_loop): Update. * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update. * tree-vect-loop-manip.c (vect_do_peeling): Update. (vect_loop_versioning): Update. * tree-vect-loop.c (scale_profile_for_vect_loop): Update. From-SVN: r249872
Diffstat (limited to 'gcc/tree-ssa-loop-ivcanon.c')
-rw-r--r--gcc/tree-ssa-loop-ivcanon.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c
index 4e828931f53..efb199aaaa2 100644
--- a/gcc/tree-ssa-loop-ivcanon.c
+++ b/gcc/tree-ssa-loop-ivcanon.c
@@ -1104,12 +1104,13 @@ try_peel_loop (struct loop *loop,
entry_freq += e->src->frequency;
gcc_assert (!flow_bb_inside_loop_p (loop, e->src));
}
- int scale = 1;
+ profile_probability p = profile_probability::very_unlikely ();
if (loop->header->count > 0)
- scale = entry_count.probability_in (loop->header->count).to_reg_br_prob_base ();
+ p = entry_count.probability_in (loop->header->count);
else if (loop->header->frequency)
- scale = RDIV (entry_freq * REG_BR_PROB_BASE, loop->header->frequency);
- scale_loop_profile (loop, scale, 0);
+ p = profile_probability::probability_in_gcov_type
+ (entry_freq, loop->header->frequency);
+ scale_loop_profile (loop, p, 0);
bitmap_set_bit (peeled_loops, loop->num);
return true;
}