bloat-buster/tests/struct_varargs.bbb

48 lines
647 B
Plaintext

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;
}