zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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:
Msrc/codegen.zig | 13+++++++++++++
Mtest/behavior/struct.zig | 1-
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