37_tail_sret.toy (405B)
1 record Triple { 2 a: i64, 3 b: i64, 4 c: i64, 5 } 6 7 fn make(x: i64, y: i64, z: i64): Triple { 8 let t: Triple = Triple { a: x, b: y, c: z }; 9 return t; 10 } 11 12 fn forward(x: i64, y: i64, z: i64): Triple { 13 return tail make(z, x, y); 14 } 15 16 fn __user_main(): i64 { 17 var t: Triple = Triple { a: 0, b: 0, c: 0 }; 18 t = forward(10, 13, 19); 19 return t.a + t.b + t.c; 20 } 21 22 fn main(): i32 { return __user_main() as i32; }