blob: e6bf3645c59973c007c3adacea4f5e6ead4cd3e6 [file] [log] [blame]
/* { dg-do run } */
/* { dg-require-effective-target trampolines } */
extern void abort (void);
extern void exit (int);
static void recursive (int n, void (*proc) (void))
{
__label__ l1;
void do_goto (void)
{
goto l1;
}
if (n == 3)
recursive (n - 1, do_goto);
else if (n > 0)
recursive (n - 1, proc);
else
(*proc) ();
return;
l1:
if (n == 3)
exit (0);
else
abort ();
}
int main ()
{
recursive (10, abort);
abort ();
}