aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-03-01 22:51:04 +0100
committerJakub Konka <kubkon@jakubkonka.com>2022-03-01 22:51:04 +0100
commit836f007c22e50557dde46c8f766e1150c25271b3 (patch)
tree5c48f12bf4ffcdf5550802760a86eedf3e9276b9 /src/codegen.zig
parente8eb9778cccd2f2d23027d9e0d73d7053bf92efe (diff)
downloadzig-836f007c22e50557dde46c8f766e1150c25271b3.tar.gz
zig-836f007c22e50557dde46c8f766e1150c25271b3.zip
codegen: ensure we descend on nested field_ptrs when lowering
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index fbc8bd9b3a..6220970003 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -339,6 +339,19 @@ pub fn generateSymbol(
.addend = (reloc_info.addend orelse 0) + addend,
});
},
+ .field_ptr => {
+ switch (try generateSymbol(bin_file, src_loc, .{
+ .ty = typed_value.ty,
+ .val = container_ptr,
+ }, code, debug_output, reloc_info)) {
+ .appended => {},
+ .externally_managed => |external_slice| {
+ code.appendSliceAssumeCapacity(external_slice);
+ },
+ .fail => |em| return Result{ .fail = em },
+ }
+ return Result{ .appended = {} };
+ },
else => return Result{
.fail = try ErrorMsg.create(
bin_file.allocator,