* gcc.dg/const-elim-1.c: xfail for xtensa.
[official-gcc.git] / gcc / testsuite / gcc.dg / sibcall-1.c
blobf9b1f7899b4d7ef63d910c1f6a5c84ac39d907c6
1 /* Simple check that sibling calls are performed from a
2 void non-leaf-function taking one int argument calling itself.
4 Copyright (C) 2002 Free Software Foundation Inc.
5 Contributed by Hans-Peter Nilsson <hp@bitrange.com> */
7 /* { dg-do run } */
8 /* { dg-options "-O2 -foptimize-sibling-calls" } */
10 /* The option -foptimize-sibling-calls is the default, but serves as
11 marker. Self-recursion tail calls are optimized for all targets,
12 regardless of presence of sibcall patterns. */
14 extern void recurser_void (int);
15 extern void track (int);
17 int main ()
19 recurser_void (0);
20 exit (0);
23 void
24 recurser_void (int n)
26 if (n == 0 || n == 7)
27 track (n);
29 if (n == 10)
30 return;
32 recurser_void (n + 1);
35 void *trackpoint;
37 void
38 track (int n)
40 char stackpos[1];
42 if (n == 0)
43 trackpoint = stackpos;
44 else if (n != 7 || trackpoint != stackpos)
45 abort ();