blob: 1ec0f6b25acbdd46d4ca8f94d49d4aecb533c868 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-foptimize-sibling-calls" } */
/* { dg-final { scan-assembler {brasl\t%r\d+,bar4} } } */
/* { dg-final { scan-assembler {brasl\t%r\d+,bar8} } } */
/* Parameter E is passed in GPR 6 which is call-saved which prohibits
sibling call optimization. This must hold true also if the mode of the
parameter is BLKmode. */
/* 4 byte */
typedef struct
{
char x;
char y[3];
} t4;
extern t4 e4;
extern void bar4 (int a, int b, int c, int d, t4 e4);
void foo4 (int a, int b, int c, int d)
{
bar4 (a, b, c, d, e4);
}
/* 8 byte */
typedef struct
{
short x;
char y[6];
} t8;
extern t8 e8;
extern void bar8 (int a, int b, int c, int d, t8 e8);
void foo8 (int a, int b, int c, int d)
{
bar8 (a, b, c, d, e8);
}