URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [nestfunc-4.c] - Rev 688
Compare with Previous | Blame | View Log
/* Origin: hp@bitrange.com Test that return values come out right from a 1000-level call chain to functions without parameters that each need at least one "long" preserved. Exposed problems related to the MMIX port. */ long level = 0; extern long foo (void); extern long bar (void); #ifdef STACK_SIZE #define DEPTH ((STACK_SIZE) / 512 + 1) #else #define DEPTH 500 #endif int main (void) { if (foo () == -42) exit (0); abort (); } long foo (void) { long tmp = ++level; return bar () + tmp; } long bar (void) { long tmp = level; return tmp > DEPTH - 1 ? -42 - tmp : foo () - tmp; }