summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/m68k
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2014-12-03 07:00:54 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2014-12-03 07:00:54 +0100
commit17adbcebf01689d2f2c5386845398d9aedbe4cb3 (patch)
tree6c118249d04560eb3de252c4a8e608732b96a03b /gcc/testsuite/gcc.target/m68k
parent51be49774041c9d2b588bb2fd139b5de7454c4f2 (diff)
re PR rtl-optimization/52714 (ICE in fixup_reorder_chain, at cfglayout.c:880)
PR rtl-optimization/52714 * combine.c (try_combine): Allow combining two insns into two new insns if at least one of those is a noop. gcc/testsuite/ * gcc.target/m68k/pr52714.c: New testcase. From-SVN: r218302
Diffstat (limited to 'gcc/testsuite/gcc.target/m68k')
-rw-r--r--gcc/testsuite/gcc.target/m68k/pr52714.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/m68k/pr52714.c b/gcc/testsuite/gcc.target/m68k/pr52714.c
new file mode 100644
index 00000000000..0a52a1d4d3a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/m68k/pr52714.c
@@ -0,0 +1,33 @@
+/* PR rtl-optimization/52714
+
+ Check that combine manages to remove the "stack == 0" test.
+ Without ICEing. */
+
+/* { dg-do compile } */
+/* { dg-options "-O1" } */
+
+int __re_compile_fastmap(unsigned char *p)
+{
+ unsigned char **stack;
+ unsigned size;
+ unsigned avail;
+
+ stack = __builtin_alloca(5 * sizeof(unsigned char*));
+ if (stack == 0)
+ return -2;
+ size = 5;
+ avail = 0;
+
+ for (;;) {
+ switch (*p++) {
+ case 0:
+ if (avail == size)
+ return -2;
+ stack[avail++] = p;
+ }
+ }
+
+ return 0;
+}
+
+/* { dg-final { scan-assembler-not {\mtst\.l %sp\M} } } */