diff options
Diffstat (limited to 'src/llvm.cff')
| -rw-r--r-- | src/llvm.cff | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/llvm.cff b/src/llvm.cff index def9346..bb6af3f 100644 --- a/src/llvm.cff +++ b/src/llvm.cff @@ -56,17 +56,15 @@ extern fn genagg(ty *const Type) void { gen("{ %t, ", agg.enumty); let size = ty.size; let ty *const Type = #null; + let off isize #?; foreach (fld, i, agg.flds) { if ty == #null or (fld.ty != #null and fld.ty.align > ty.align) { ty = fld.ty; + off = fld.off; } } ty = ty ?? ty_void; - gen(" %t ", ty); - if ty.size < size { - gen(", [%z x i8] ", size - ty.size); - } - gen("}"); + gen(" %t, [%z x i8] }", ty, size - ty.size - off); } } |