diff gcc/testsuite/gcc.c-torture/compile/pr20583.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gcc.c-torture/compile/pr20583.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,30 @@
+/* PR target/20583
+   On m68k-none-elf, CSE used to generate
+
+     (set (reg:HI ...)
+          (const:HI (truncate:HI (minus:SI (label_ref ...)
+                                           (label_ref ...)))))
+
+   which output functions do not know how to handle.  Make sure that
+   such a constant will be rejected.  */
+
+void bar (unsigned int);
+
+void
+foo (void)
+{
+  char buf[1] = { 3 };
+  const char *p = buf;
+  const char **q = &p;
+  unsigned int ch;
+  switch (**q)
+    {
+    case 1:  ch = 5; break;
+    case 2:  ch = 4; break;
+    case 3:  ch = 3; break;
+    case 4:  ch = 2; break;
+    case 5:  ch = 1; break;
+    default: ch = 0; break;
+    }
+  bar (ch);
+}