// Here we're testing that all of the argument registers, argument // stack slots, and return value are preserved across split stacks. fn getbig(a0: int, a1: int, a2: int, a3: int, a4: int, a5: int, a6: int, a7: int, a8: int, a9: int) -> int { assert a0 + 1 == a1; assert a1 + 1 == a2; assert a2 + 1 == a3; assert a3 + 1 == a4; assert a4 + 1 == a5; assert a5 + 1 == a6; assert a6 + 1 == a7; assert a7 + 1 == a8; assert a8 + 1 == a9; if a0 != 0 { let j = getbig(a0 - 1, a1 - 1, a2 - 1, a3 - 1, a4 - 1, a5 - 1, a6 - 1, a7 - 1, a8 - 1, a9 - 1); assert j == a0 - 1; } return a0; } fn main() { let a = 10000; getbig(a, a+1, a+2, a+3, a+4, a+5, a+6, a+7, a+8, a+9); }