diff options
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/llvm/Builder.zig | 27 | ||||
| -rw-r--r-- | src/codegen/llvm/ir.zig | 8 |
2 files changed, 24 insertions, 11 deletions
diff --git a/src/codegen/llvm/Builder.zig b/src/codegen/llvm/Builder.zig index 02f5ce7d16..7bbfb4426a 100644 --- a/src/codegen/llvm/Builder.zig +++ b/src/codegen/llvm/Builder.zig @@ -13015,18 +13015,23 @@ pub fn toBitcode(self: *Builder, allocator: Allocator) bitcode_writer.Error![]co .string = extra.id.slice(self).?, }); - const real_struct = self.type_items.items[@intFromEnum(extra.body)]; - const is_packed: bool = switch (real_struct.tag) { - .structure => false, - .packed_structure => true, - else => unreachable, - }; + switch (extra.body) { + .none => try type_block.writeAbbrev(ir.Type.Opaque{}), + else => { + const real_struct = self.type_items.items[@intFromEnum(extra.body)]; + const is_packed: bool = switch (real_struct.tag) { + .structure => false, + .packed_structure => true, + else => unreachable, + }; - var real_extra = self.typeExtraDataTrail(Type.Structure, real_struct.data); - try type_block.writeAbbrev(ir.Type.StructNamed{ - .is_packed = is_packed, - .types = real_extra.trail.next(real_extra.data.fields_len, Type, self), - }); + var real_extra = self.typeExtraDataTrail(Type.Structure, real_struct.data); + try type_block.writeAbbrev(ir.Type.StructNamed{ + .is_packed = is_packed, + .types = real_extra.trail.next(real_extra.data.fields_len, Type, self), + }); + }, + } }, .array, .small_array, diff --git a/src/codegen/llvm/ir.zig b/src/codegen/llvm/ir.zig index df234a6cc4..1b855cb7df 100644 --- a/src/codegen/llvm/ir.zig +++ b/src/codegen/llvm/ir.zig @@ -188,6 +188,7 @@ pub const Type = struct { pub const abbrevs = [_]type{ NumEntry, Simple, + Opaque, Integer, StructAnon, StructNamed, @@ -214,6 +215,13 @@ pub const Type = struct { code: u5, }; + pub const Opaque = struct { + pub const ops = [_]AbbrevOp{ + .{ .literal = 6 }, + .{ .literal = 0 }, + }; + }; + pub const Integer = struct { pub const ops = [_]AbbrevOp{ .{ .literal = 7 }, |
