PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / nestfunc-4.c
blobc7225700709f3112c50c3afaf790ca960bb75c66
1 /* { dg-add-options stack_size } */
3 /* Origin: hp@bitrange.com
4 Test that return values come out right from a 1000-level call chain to
5 functions without parameters that each need at least one "long"
6 preserved. Exposed problems related to the MMIX port. */
8 long level = 0;
9 extern long foo (void);
10 extern long bar (void);
12 #ifdef STACK_SIZE
13 #define DEPTH ((STACK_SIZE) / 512 + 1)
14 #else
15 #define DEPTH 500
16 #endif
18 int
19 main (void)
21 if (foo () == -42)
22 exit (0);
24 abort ();
27 long
28 foo (void)
30 long tmp = ++level;
31 return bar () + tmp;
34 long
35 bar (void)
37 long tmp = level;
38 return tmp > DEPTH - 1 ? -42 - tmp : foo () - tmp;