diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bac2003e3ea..6f8967fe617 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2002-01-07 Jakub Jelinek + + * predict.c (combine_predictions_for_insn): Avoid division by zero. + 2002-01-07 Jakub Jelinek * simplify-rtx.c (simplify_plus_minus): Bump n_ops for NOT. diff --git a/gcc/predict.c b/gcc/predict.c index 71da61a7c17..c35837ed2b7 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -253,8 +253,12 @@ combine_predictions_for_insn (insn, bb) * (REG_BR_PROB_BASE - probability)); /* Use FP math to avoid overflows of 32bit integers. */ - combined_probability = (((double) combined_probability) * probability - * REG_BR_PROB_BASE / d + 0.5); + if (d == 0) + /* If one probability is 0% and one 100%, avoid division by zero. */ + combined_probability = REG_BR_PROB_BASE / 2; + else + combined_probability = (((double) combined_probability) * probability + * REG_BR_PROB_BASE / d + 0.5); } /* Decide which heuristic to use. In case we didn't match anything,