26 lines
568 B
C
26 lines
568 B
C
/* { 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.*" } } */
|