diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/sh/sh-relax.c')
-rw-r--r-- | gcc/testsuite/gcc.target/sh/sh-relax.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/sh/sh-relax.c b/gcc/testsuite/gcc.target/sh/sh-relax.c new file mode 100644 index 000000000..54422de46 --- /dev/null +++ b/gcc/testsuite/gcc.target/sh/sh-relax.c @@ -0,0 +1,41 @@ +/* Check that -mrelax works. */ +/* { dg-do run { target { { sh-*-* sh?-*-* } && { ! { sh*-*-vxworks* && nonpic } } } } } */ +/* { dg-options "-O1 -mrelax" } */ + +extern void abort (void); +extern int qwerty (int); + +int +f (int i) +{ + return qwerty (i) + 1; +} + +int +qwerty (int i) +{ + switch (i) + { + case 1: + return 'q'; + case 2: + return 'w'; + case 3: + return 'e'; + case 4: + return 'r'; + case 5: + return 't'; + case 6: + return 'y'; + } +} + +int +main () +{ + if (f (1) != 'q' + 1 || f (2) != 'w' + 1 || f (3) != 'e' + 1 + || f(4) != 'r' + 1 || f (5) != 't' + 1 || f (6) != 'y' + 1) + abort (); + return 0; +} |