2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / nestfunc-4.c
blobe028166b60876e27cad77add778e1cd7470761de
1 /* Origin: hp@bitrange.com
2 Test that return values come out right from a 1000-level call chain to
3 functions without parameters that each need at least one "long"
4 preserved. Exposed problems related to the MMIX port. */
6 long level = 0;
7 extern long foo (void);
8 extern long bar (void);
10 #ifdef STACK_SIZE
11 #define DEPTH ((STACK_SIZE) / 512 + 1)
12 #else
13 #define DEPTH 500
14 #endif
16 int
17 main (void)
19 if (foo () == -42)
20 exit (0);
22 abort ();
25 long
26 foo (void)
28 long tmp = ++level;
29 return bar () + tmp;
32 long
33 bar (void)
35 long tmp = level;
36 return tmp > DEPTH - 1 ? -42 - tmp : foo () - tmp;