/* { dg-do compile } */ | |
/* { dg-options "-O2" } */ | |
/* Just create some dummy call that should trigger sibcall, no | |
stack logic. */ | |
int calc (int a, int b, int c) { | |
if (c <= 0) return a; | |
return calc (a * b, b, --c); | |
} | |
int main() { | |
return calc (4, 3, 4); | |
} | |
/* Ensure sibcalls do not need to manipulate the stack. */ | |
/* { dg-final { scan-assembler-not "r1," } } */ | |
/* Ensure sibcall maintains the body of the function. */ | |
/* { dg-final { scan-assembler "l.mul" } } */ |