diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/nios2/cdx-callret.c')
-rw-r--r-- | gcc/testsuite/gcc.target/nios2/cdx-callret.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/nios2/cdx-callret.c b/gcc/testsuite/gcc.target/nios2/cdx-callret.c new file mode 100644 index 00000000000..239ec6e943e --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/cdx-callret.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=r2 -mcdx" } */ + +/* Check generation of R2 CDX callr.n, jmpr.n, ret.n instructions. */ + +typedef int (*F) (void); + +int x (F f) +{ + f (); + + /* Note that the compiler might generate a return via pop.n or ldwm; + the test below is to make sure that it doesn't generate a 32-bit + return instruction. */ + return 3; +} + +int y (F f) +{ + return f (); +} + +/* { dg-final { scan-assembler "\tcallr\\.n\t.*" } } */ +/* { dg-final { scan-assembler-not "\tret$" } } */ +/* { dg-final { scan-assembler "\tjmpr\\.n\t.*" } } */ |