aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2018-01-13 20:32:04 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2018-01-13 19:32:04 +0000
commitf36180f4a415cb579461f8f3e79a1a4aa80e6be8 (patch)
tree74423b123d83963345d78c0b2f20c0b53f441929
parent39f309aca6e6b756ffab4222ffc39094042b9413 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/predict.c6
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);