diff options
author | Martin Jambor <mjambor@suse.cz> | 2017-07-31 14:43:24 +0200 |
---|---|---|
committer | Martin Jambor <mjambor@suse.cz> | 2017-07-31 14:43:24 +0200 |
commit | b32f12dece884f1fa0f04c643a77105aff6ce8bc (patch) | |
tree | cdab5f10806561fc198f907299b0e55eb5701ef0 /gcc/sched-rgn.c | |
parent | 166bec868d991fdf71f9a66f994e5977fcab4aa2 (diff) | |
parent | a168a775e93ec31ae743ad282d8e60fa1c116891 (diff) | |
download | gcc-gcn.tar.gz |
Merge branch 'master' into gcngcn
Diffstat (limited to 'gcc/sched-rgn.c')
-rw-r--r-- | gcc/sched-rgn.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 3bb9356693e..492094e3624 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -507,7 +507,8 @@ find_single_block_region (bool ebbs_p) e = find_fallthru_edge (bb->succs); if (! e) break; - if (e->probability <= probability_cutoff) + if (e->probability.initialized_p () + && e->probability.to_reg_br_prob_base () <= probability_cutoff) break; } @@ -1441,7 +1442,11 @@ compute_dom_prob_ps (int bb) FOR_EACH_EDGE (out_edge, out_ei, in_edge->src->succs) bitmap_set_bit (pot_split[bb], EDGE_TO_BIT (out_edge)); - prob[bb] += combine_probabilities (prob[pred_bb], in_edge->probability); + prob[bb] += combine_probabilities + (prob[pred_bb], + in_edge->probability.initialized_p () + ? in_edge->probability.to_reg_br_prob_base () + : 0); // The rounding divide in combine_probabilities can result in an extra // probability increment propagating along 50-50 edges. Eventually when // the edges re-merge, the accumulated probability can go slightly above @@ -3171,8 +3176,10 @@ schedule_region (int rgn) sched_rgn_n_insns += sched_n_insns; realloc_bb_state_array (saved_last_basic_block); f = find_fallthru_edge (last_bb->succs); - if (f && f->probability * 100 / REG_BR_PROB_BASE >= - PARAM_VALUE (PARAM_SCHED_STATE_EDGE_PROB_CUTOFF)) + if (f + && (!f->probability.initialized_p () + || f->probability.to_reg_br_prob_base () * 100 / REG_BR_PROB_BASE >= + PARAM_VALUE (PARAM_SCHED_STATE_EDGE_PROB_CUTOFF))) { memcpy (bb_state[f->dest->index], curr_state, dfa_state_size); |