blob: 3a9c459cec3e76665671e12d8e74d21bf0db2c9a [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-Os -march=r2 -mcdx" } */
/* Check generation of R2 CDX br.n, beqz.n, bnez.n instructions. */
int f (int a, int b, int c)
{
if (a == 0)
return b;
else
return c;
}
int g (int a, int b, int c)
{
if (a != 0)
return b;
else
return c;
}
extern int i (int);
extern int j (int);
extern int k (int);
int h (int a, int b)
{
int x;
/* As well as the conditional branch for the "if", there has to be
an unconditional branch from one branch of the "if" to
the return statement. We compile this testcase with -Os to
avoid insertion of a duplicate epilogue in place of the branch. */
if (a == b)
x = i (37);
else
x = j (42);
return x + a + k (x);
}
/* { dg-final { scan-assembler "\tbeqz\\.n\t.*" } } */
/* { dg-final { scan-assembler "\tbnez\\.n\t.*" } } */
/* { dg-final { scan-assembler "\tbeq\t|\tbne\t" } } */
/* { dg-final { scan-assembler "\tbr\\.n\t.*" } } */