summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorolegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-02-04 22:43:47 +0000
committerolegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-02-04 22:43:47 +0000
commitf688fff740e01f7aef2b1ef7abb9000345a3772b (patch)
tree5d17bf1706f6a82e65a1168ac1e1c312ebe7442b /gcc/testsuite
parente602ed3fc07474961a2d40bd5be582f51769c2fa (diff)
downloadgcc-f688fff740e01f7aef2b1ef7abb9000345a3772b.tar.gz
PR target/55146
* gcc.target/sh/pr55146.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195743 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.target/sh/pr55146.c50
2 files changed, 56 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 29f0281b476..acdad16e5eb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,4 +1,9 @@
-2012-02-04 Oleg Endo <olegendo@gcc.gnu.org>
+2013-02-04 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/55146
+ * gcc.target/sh/pr55146.c: New.
+
+2013-02-04 Oleg Endo <olegendo@gcc.gnu.org>
PR tree-optimization/54386
* gcc.target/sh/pr54386.c: New.
diff --git a/gcc/testsuite/gcc.target/sh/pr55146.c b/gcc/testsuite/gcc.target/sh/pr55146.c
new file mode 100644
index 00000000000..11dd49ff6e4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr55146.c
@@ -0,0 +1,50 @@
+/* Check that the 'extu.b' instruction is generated for short jump tables. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-Os" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */
+/* { dg-final { scan-assembler "extu.b" } } */
+
+int
+test (int arg)
+{
+ int rc;
+ switch (arg)
+ {
+ case 0:
+ asm ("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "nop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "mov r4,%0"
+ : "=r" (rc)
+ : "r" (arg));
+ break;
+ case 1:
+ asm ("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "nop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "mov r5,%0"
+ : "=r" (rc)
+ : "r" (arg));
+ break;
+ case 2:
+ asm ("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "nop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "mov r6,%0"
+ : "=r" (rc)
+ : "r" (arg));
+ break;
+ case 3:
+ asm ("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "nop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "mov r7,%0"
+ : "=r" (rc)
+ : "r" (arg));
+ break;
+ case 4:
+ asm ("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "nop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\tnop\n\t"
+ "mov r8,%0"
+ : "=r" (rc)
+ : "r" (arg));
+ break;
+ }
+ return rc;
+}