58 lines
703 B
C
58 lines
703 B
C
/* { dg-do run } */
|
|
/* { dg-options "-O -fno-inline" } */
|
|
|
|
extern void abort (void);
|
|
|
|
/* Return 0 and clobber the static chain. */
|
|
|
|
int
|
|
zero (int n)
|
|
{
|
|
int
|
|
nested (int m)
|
|
{
|
|
return m - n;
|
|
}
|
|
|
|
return nested (n);
|
|
}
|
|
|
|
/* Return the triple of ARG in a convoluted manner. */
|
|
|
|
int
|
|
triple (int arg)
|
|
{
|
|
int
|
|
read_arg (void)
|
|
{
|
|
return arg;
|
|
}
|
|
|
|
int
|
|
parent (int nested_arg)
|
|
{
|
|
int
|
|
child1 (void)
|
|
{
|
|
return parent (zero (5));
|
|
}
|
|
|
|
int
|
|
child2 (void)
|
|
{
|
|
return nested_arg + read_arg ();
|
|
}
|
|
|
|
return (nested_arg == 0 ? 0 : child1 ()) + child2 ();
|
|
}
|
|
|
|
return parent (arg);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
if (triple (13) != 3 * 13)
|
|
abort ();
|
|
return 0;
|
|
}
|