diff options
Diffstat (limited to 'gcc/sel-sched-ir.c')
-rw-r--r-- | gcc/sel-sched-ir.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index c1e2c24d950..dd72828795d 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -4747,7 +4747,9 @@ compute_succs_info (insn_t insn, short flags) sinfo->probs_ok.safe_push ( /* FIXME: Improve calculation when skipping inner loop to exits. */ - si.bb_end ? si.e1->probability : REG_BR_PROB_BASE); + si.bb_end && si.e1->probability.initialized_p () + ? si.e1->probability.to_reg_br_prob_base () + : REG_BR_PROB_BASE); sinfo->succs_ok_n++; } else @@ -4756,8 +4758,8 @@ compute_succs_info (insn_t insn, short flags) /* Compute all_prob. */ if (!si.bb_end) sinfo->all_prob = REG_BR_PROB_BASE; - else - sinfo->all_prob += si.e1->probability; + else if (si.e1->probability.initialized_p ()) + sinfo->all_prob += si.e1->probability.to_reg_br_prob_base (); sinfo->all_succs_n++; } |