From 2a00666935fa4118b927c5d5cd500c08d41bb566 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 16 Nov 2017 12:06:49 +0100 Subject: [PATCH] * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): Update to profile counts. (tree_transform_and_unroll_loop): Likewise. From-SVN: r254811 --- gcc/ChangeLog | 6 ++++++ gcc/tree-ssa-loop-manip.c | 16 ++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 872ca086308..9211a8b33c5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-11-14 Jan Hubicka + + * tree-ssa-loop-manip.c + (scale_dominated_blocks_in_loop): Update to profile counts. + (tree_transform_and_unroll_loop): Likewise. + 2017-11-14 Jan Hubicka * tree-vect-loop-manip.c (vect_do_peeling): Do not use diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c index 1efcd272241..12c49d7cfd4 100644 --- a/gcc/tree-ssa-loop-manip.c +++ b/gcc/tree-ssa-loop-manip.c @@ -1091,11 +1091,11 @@ determine_exit_conditions (struct loop *loop, struct tree_niter_desc *desc, static void scale_dominated_blocks_in_loop (struct loop *loop, basic_block bb, - int num, int den) + profile_count num, profile_count den) { basic_block son; - if (den == 0) + if (!den.nonzero_p () && !(num == profile_count::zero ())) return; for (son = first_dom_son (CDI_DOMINATORS, bb); @@ -1104,7 +1104,7 @@ scale_dominated_blocks_in_loop (struct loop *loop, basic_block bb, { if (!flow_bb_inside_loop_p (loop, son)) continue; - scale_bbs_frequencies_int (&son, 1, num, den); + scale_bbs_frequencies_profile_count (&son, 1, num, den); scale_dominated_blocks_in_loop (loop, son, num, den); } } @@ -1281,9 +1281,10 @@ tree_transform_and_unroll_loop (struct loop *loop, unsigned factor, scale_dominated_blocks_in_loop (loop, exit->src, /* We are scaling up here so probability does not fit. */ - REG_BR_PROB_BASE, - REG_BR_PROB_BASE - - exit->probability.to_reg_br_prob_base ()); + loop->header->count, + loop->header->count + - loop->header->count.apply_probability + (exit->probability)); bsi = gsi_last_bb (exit_bb); exit_if = gimple_build_cond (EQ_EXPR, integer_zero_node, @@ -1377,8 +1378,7 @@ tree_transform_and_unroll_loop (struct loop *loop, unsigned factor, { /* Avoid dropping loop body profile counter to 0 because of zero count in loop's preheader. */ - if (freq_e == profile_count::zero ()) - freq_e = profile_count::from_gcov_type (1); + freq_e = freq_e.force_nonzero (); scale_loop_frequencies (loop, freq_e.probability_in (freq_h)); } -- 2.30.2