aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2002-03-21 21:50:15 -0500
committerDJ Delorie <dj@gcc.gnu.org>2002-03-21 21:50:15 -0500
commitfbc2782eff5df7b8d6c2c4a2cdf4cb92933aeeea (patch)
treed7d23d6655c2f0ceba0beacba09ffb8ab6a2d87c /gcc
parentc0561434cdccc513e6b1238302a5b8f798456b66 (diff)
downloadgcc-fbc2782eff5df7b8d6c2c4a2cdf4cb92933aeeea.zip
gcc-fbc2782eff5df7b8d6c2c4a2cdf4cb92933aeeea.tar.gz
gcc-fbc2782eff5df7b8d6c2c4a2cdf4cb92933aeeea.tar.bz2
bb-reorder.c (make_reorder_chain_1): Protect against when redundant edges are omitted.
* bb-reorder.c (make_reorder_chain_1): Protect against when redundant edges are omitted. * predict.c (dump_prediction): Likewise. From-SVN: r51160
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/bb-reorder.c2
-rw-r--r--gcc/predict.c11
3 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bbdadd7..a975304 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2002-03-21 DJ Delorie <dj@redhat.com>
+
+ * bb-reorder.c (make_reorder_chain_1): Protect against
+ when redundant edges are omitted.
+ * predict.c (dump_prediction): Likewise.
+
2002-03-21 Richard Henderson <rth@redhat.com>
PR target/5996
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index 2578604..3647ad6 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -205,7 +205,7 @@ make_reorder_chain_1 (bb, prev)
e_taken = e;
}
- next = (taken ? e_taken : e_fall)->dest;
+ next = ((taken && e_taken) ? e_taken : e_fall)->dest;
}
/* In the absence of a prediction, disturb things as little as possible
diff --git a/gcc/predict.c b/gcc/predict.c
index 61cfd63..56b0436 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -194,7 +194,7 @@ dump_prediction (predictor, probability, bb, used)
if (!rtl_dump_file)
return;
- while (e->flags & EDGE_FALLTHRU)
+ while (e && (e->flags & EDGE_FALLTHRU))
e = e->succ_next;
fprintf (rtl_dump_file, " %s heuristics%s: %.1f%%",
@@ -205,9 +205,12 @@ dump_prediction (predictor, probability, bb, used)
{
fprintf (rtl_dump_file, " exec ");
fprintf (rtl_dump_file, HOST_WIDEST_INT_PRINT_DEC, bb->count);
- fprintf (rtl_dump_file, " hit ");
- fprintf (rtl_dump_file, HOST_WIDEST_INT_PRINT_DEC, e->count);
- fprintf (rtl_dump_file, " (%.1f%%)", e->count * 100.0 / bb->count);
+ if (e)
+ {
+ fprintf (rtl_dump_file, " hit ");
+ fprintf (rtl_dump_file, HOST_WIDEST_INT_PRINT_DEC, e->count);
+ fprintf (rtl_dump_file, " (%.1f%%)", e->count * 100.0 / bb->count);
+ }
}
fprintf (rtl_dump_file, "\n");