authorgravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2023-06-14 20:03:01+02:00
committergravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2023-06-16 17:16:56+02:00
log1cfad29f10a557df986fc940dcce7620bbd5d4d9
tree27b4a68634bbb3f4fc0b1185ca420357fe4dc165
parent098b0b50ab3980a257ad0840034f21ef5349ac8b
signaturelock-open Commit is signed but in an unrecognized format.

codegen: fix union padding

This regressed during the internpool merges. This commit reinstates the padding logic for unions.

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

src/codegen.zig+4
...@@ -598,6 +598,10 @@ pub fn generateSymbol(...@@ -598,6 +598,10 @@ pub fn generateSymbol(
598 .fail => |em| return Result{ .fail = em },598 .fail => |em| return Result{ .fail = em },
599 }599 }
600 }600 }
601
602 if (layout.padding > 0) {
603 try code.writer().writeByteNTimes(0, layout.padding);
604 }
601 },605 },
602 .memoized_call => unreachable,606 .memoized_call => unreachable,
603 }607 }
test/behavior/bugs/1381.zig-1
...@@ -17,7 +17,6 @@ test "union that needs padding bytes inside an array" {...@@ -17,7 +17,6 @@ test "union that needs padding bytes inside an array" {
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
2120
22 var as = [_]A{21 var as = [_]A{
23 A{ .B = B{ .D = 1 } },22 A{ .B = B{ .D = 1 } },