/* { dg-do link } */ | |
/* { dg-options "-O2" } */ | |
extern void link_error (void); | |
typedef unsigned char(*Calculable)(void); | |
static unsigned char one() { return 1; } | |
static unsigned char two() { return 2; } | |
static int | |
print(Calculable calculate) | |
{ | |
return calculate() + calculate() + 1; | |
} | |
int | |
main() | |
{ | |
/* Make sure we perform indirect inlining of one and two and optimize | |
the result to a constant. */ | |
for (int i = 0; i < 100; i++) | |
{ | |
if (print(one) != 3) | |
link_error (); | |
if (print(two) != 5) | |
link_error (); | |
} | |
return 0; | |
} |