aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Monakov <amonakov@ispras.ru>2019-03-01 19:18:04 +0300
committerRichard Biener <rguenther@suse.de>2021-05-04 14:13:18 +0200
commita9ac51b5497c92b016bd8d3f7c908f246dbd8f35 (patch)
tree6e410e1dd262af071c60bcea481bd2be6fdd7577
parentb7bdb6462bb171102bada0579981e2bdbe813b21 (diff)
haifa-sched: handle fallthru edge to EXIT block (PR 85899)
2019-03-01 Alexander Monakov <amonakov@ispras.ru> PR rtl-optimization/85899 * haifa-sched.c (find_fallthru_edge_from): Relax assert to account for fallthru edges leading to the exit block. * gcc.dg/pr85899.c: New test. (cherry picked from commit 5055060066723e409519376c8e571e51cff1eb30)
-rw-r--r--gcc/haifa-sched.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr85899.c17
2 files changed, 18 insertions, 1 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 4a899b56173..ba70fc61518 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -8056,7 +8056,7 @@ find_fallthru_edge_from (basic_block pred)
if (e)
{
- gcc_assert (e->dest == succ);
+ gcc_assert (e->dest == succ || e->dest->index == EXIT_BLOCK);
return e;
}
}
diff --git a/gcc/testsuite/gcc.dg/pr85899.c b/gcc/testsuite/gcc.dg/pr85899.c
new file mode 100644
index 00000000000..eb2b175339c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr85899.c
@@ -0,0 +1,17 @@
+/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -fschedule-insns -fselective-scheduling -funroll-loops -fno-gcse -fno-if-conversion -fno-ivopts" } */
+
+#define N 4096
+int cb[N];
+int cc[N];
+int cd[N];
+
+void init ()
+{
+ int i;
+ for (i = 0; i < N; ++i) {
+ cb[i] = 3 * i - 2048;
+ cc[i] = -5 * i + 93;
+ cd[i] = i % 2 ? 1 : -1;
+ }
+}