S = struct { a: u32, b: u32, c: u64, d: u64, e: u64 } require = fn (ok: u1) void { if (!ok) { #trap(); } } va_arg_fn = fn [cc(c)] (first_arg: u32, ...) void { if (first_arg != 123456789) { #trap(); } >va = #va_start(); >s = #va_arg(&va, S); require(s.a == 5); require(s.b == 4); require(s.c == 3); require(s.d == 2); require(s.e == 1); } [export] main = fn [cc(c)] () s32 { >first_arg: u32 = 123456789; >s : S = { .a = 5, .b = 4, .c = 3, .d = 2, .e = 1, }; va_arg_fn(first_arg, s); return 0; }