blob: 9a0313f2c427eddd41882c69e2e4718294a89a74 [file] [log] [blame]
/* { dg-options "-Os -msave-restore" } */
/* This test covers a case where we can't (currently) remove the calls to
the save/restore stubs. The cast of the return value from BAR requires
a zero extension between the call to BAR, and the return from FOO, this
currently prevents the removal of the save/restore calls. */
typedef unsigned long long u_64;
typedef unsigned int u_32;
extern u_32 bar (u_32 arg);
u_64 foo (u_32 arg)
return (u_64) bar (arg);
/* { dg-final { scan-assembler "call\[ \t\]*t0,__riscv_save_0" } } */
/* { dg-final { scan-assembler "tail\[ \t\]*__riscv_restore_0" } } */