modernc.org/cc@v1.0.1/testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/nestfunc-4.c (about) 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. */ 5 6 long level = 0; 7 extern long foo (void); 8 extern long bar (void); 9 10 #ifdef STACK_SIZE 11 #define DEPTH ((STACK_SIZE) / 512 + 1) 12 #else 13 #define DEPTH 500 14 #endif 15 16 int 17 main (void) 18 { 19 if (foo () == -42) 20 exit (0); 21 22 abort (); 23 } 24 25 long 26 foo (void) 27 { 28 long tmp = ++level; 29 return bar () + tmp; 30 } 31 32 long 33 bar (void) 34 { 35 long tmp = level; 36 return tmp > DEPTH - 1 ? -42 - tmp : foo () - tmp; 37 }