diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2017-07-01 22:46:40 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2017-07-01 20:46:40 +0000 |
commit | af2bbc51d3879b6e7a03b4dc2d4ab017a98270ba (patch) | |
tree | 7af6a2ca2adedc6bef10ea8e3c46425031abf858 /gcc/tree-ssa-loop-ivcanon.c | |
parent | e39df5466d0cde13fd47e612f20ef2b0ac117e2b (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.c | 9 |
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; } |