diff options
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index f5340458a5..e7f927a2d6 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -363,11 +363,21 @@ pub fn generateSymbol( const mod = bin_file.options.module.?; const decl = mod.declPtr(decl_index); const addend = blk: { - switch (decl.ty.tag()) { - .@"struct" => { + switch (decl.ty.zigTypeTag()) { + .Struct => { const addend = decl.ty.structFieldOffset(field_ptr.field_index, target); break :blk @intCast(u32, addend); }, + .Pointer => { + assert(decl.ty.isSlice()); + var buf: Type.SlicePtrFieldTypeBuffer = undefined; + const addend = switch (field_ptr.field_index) { + 0 => 0, + 1 => decl.ty.slicePtrFieldType(&buf).abiSize(target), + else => unreachable, + }; + break :blk @intCast(u32, addend); + }, else => return Result{ .fail = try ErrorMsg.create( bin_file.allocator, |
