type :t = { w 2 } function :t $func() { @start.0 %temp =l alloc4 4 %ret =l alloc4 8 storew 1, %temp # storew can also go here %field =l add %ret, 4 storew 2, %ret blit %temp, %field, 4 # removing either of these storews causes it to work storew 2, %ret ret %ret } export function w $main() { @start %ret =:t call $func() %fptr =l add %ret, 4 %field =w loaduw %fptr %x =w ceqw %field, 1 jnz %x, @passed, @failed @failed # this fails despite 1 => temp => ret + 4 => field call $abort() @passed ret 0 }