re PR target/55146 (jumptables with byte entries produce wrong code with -Os/-O2 for SH-1)

PR target/55146
	* gcc.target/sh/pr55146.c: New.

From-SVN: r195743
This commit is contained in:
Oleg Endo 2013-02-04 22:43:47 +00:00
parent 951eb5c7e2
commit 3503fff112
2 changed files with 56 additions and 1 deletions

View File

@ -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.

View File

@ -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;
}