commit 836f007c22e50557dde46c8f766e1150c25271b3 (tree)
parent e8eb9778cccd2f2d23027d9e0d73d7053bf92efe
Author: Jakub Konka <kubkon@jakubkonka.com>
Date: Tue, 1 Mar 2022 22:51:04 +0100
codegen: ensure we descend on nested field_ptrs when lowering
Diffstat:
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git 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,
diff --git a/test/behavior/struct.zig b/test/behavior/struct.zig
@@ -780,7 +780,6 @@ test "packed struct with u0 field access" {
test "access to global struct fields" {
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
- if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO