diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2018-01-13 20:32:04 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2018-01-13 19:32:04 +0000 |
commit | f36180f4a415cb579461f8f3e79a1a4aa80e6be8 (patch) | |
tree | 74423b123d83963345d78c0b2f20c0b53f441929 | |
parent | 39f309aca6e6b756ffab4222ffc39094042b9413 (diff) | |
download | gcc-f36180f4a415cb579461f8f3e79a1a4aa80e6be8.zip gcc-f36180f4a415cb579461f8f3e79a1a4aa80e6be8.tar.gz gcc-f36180f4a415cb579461f8f3e79a1a4aa80e6be8.tar.bz2 |
predict.c (determine_unlikely_bbs): Handle correctly BBs which appears in the queue multiple times.
* predict.c (determine_unlikely_bbs): Handle correctly BBs
which appears in the queue multiple times.
From-SVN: r256648
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/predict.c | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 37656fa..bcc77eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-01-13 Jan Hubicka <hubicka@ucw.cz> + + * predict.c (determine_unlikely_bbs): Handle correctly BBs + which appears in the queue multiple times. + 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> diff --git a/gcc/predict.c b/gcc/predict.c index b6be32d..4c1e448 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -3565,6 +3565,8 @@ determine_unlikely_bbs () while (worklist.length () > 0) { bb = worklist.pop (); + if (bb->count == profile_count::zero ()) + continue; if (bb != ENTRY_BLOCK_PTR_FOR_FN (cfun)) { bool found = false; @@ -3583,8 +3585,7 @@ determine_unlikely_bbs () if (found) continue; } - if (!(bb->count == profile_count::zero ()) - && (dump_file && (dump_flags & TDF_DETAILS))) + if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "Basic block %i is marked unlikely by backward prop\n", bb->index); @@ -3594,6 +3595,7 @@ determine_unlikely_bbs () { if (!(e->src->count == profile_count::zero ())) { + gcc_checking_assert (nsuccs[e->src->index] > 0); nsuccs[e->src->index]--; if (!nsuccs[e->src->index]) worklist.safe_push (e->src); |