aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/predict.c8
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bac2003..6f8967f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2002-01-07 Jakub Jelinek <jakub@redhat.com>
+ * predict.c (combine_predictions_for_insn): Avoid division by zero.
+
+2002-01-07 Jakub Jelinek <jakub@redhat.com>
+
* simplify-rtx.c (simplify_plus_minus): Bump n_ops for NOT.
Don't allow -1 - x -> ~x simplifications in the first pass.
diff --git a/gcc/predict.c b/gcc/predict.c
index 71da61a..c35837e 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,