From f1d4407044b5cd5eaabf0a53d1d7cb5d8b270ea6 Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 30 Aug 2022 20:20:06 +0200 Subject: fix some type size errors --- src/llvm.cff | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/llvm.cff') 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); } } -- cgit v1.2.3