authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-03-01 22:51:04+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-03-01 22:51:04+01:00
log836f007c22e50557dde46c8f766e1150c25271b3
tree5c48f12bf4ffcdf5550802760a86eedf3e9276b9
parente8eb9778cccd2f2d23027d9e0d73d7053bf92efe

codegen: ensure we descend on nested field_ptrs when lowering


2 files changed, 13 insertions(+), 1 deletions(-)

src/codegen.zig+13
......@@ -339,6 +339,19 @@ pub fn generateSymbol(
339339 .addend = (reloc_info.addend orelse 0) + addend,
340340 });
341341 },
342 .field_ptr => {
343 switch (try generateSymbol(bin_file, src_loc, .{
344 .ty = typed_value.ty,
345 .val = container_ptr,
346 }, code, debug_output, reloc_info)) {
347 .appended => {},
348 .externally_managed => |external_slice| {
349 code.appendSliceAssumeCapacity(external_slice);
350 },
351 .fail => |em| return Result{ .fail = em },
352 }
353 return Result{ .appended = {} };
354 },
342355 else => return Result{
343356 .fail = try ErrorMsg.create(
344357 bin_file.allocator,
test/behavior/struct.zig-1
......@@ -780,7 +780,6 @@ test "packed struct with u0 field access" {
780780
781781test "access to global struct fields" {
782782 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
783 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
784783 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
785784 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
786785 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO