diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-05-19 03:12:34 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2023-06-25 19:14:03 -0400 |
| commit | 3f13987a761ed805656bec3b8e4db591a1cbc8ed (patch) | |
| tree | dd29f1ff5aea5c55ef53e579e72441217da1a1db /src/codegen.zig | |
| parent | e13aa915b20db3f5521f5f280ba0bd9b1a79f1c0 (diff) | |
| download | zig-3f13987a761ed805656bec3b8e4db591a1cbc8ed.tar.gz zig-3f13987a761ed805656bec3b8e4db591a1cbc8ed.zip | |
x86_64: add missing padding to global unions
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 1718201e6c..69499fb1ad 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -558,7 +558,7 @@ pub fn generateSymbol( } // Check if we should store the tag first. - if (layout.tag_align >= layout.payload_align) { + if (layout.tag_size > 0 and layout.tag_align >= layout.payload_align) { switch (try generateSymbol(bin_file, src_loc, .{ .ty = typed_value.ty.unionTagType(mod).?, .val = un.tag.toValue(), @@ -589,7 +589,7 @@ pub fn generateSymbol( } } - if (layout.tag_size > 0) { + if (layout.tag_size > 0 and layout.tag_align < layout.payload_align) { switch (try generateSymbol(bin_file, src_loc, .{ .ty = union_ty.tag_ty, .val = un.tag.toValue(), @@ -597,10 +597,10 @@ pub fn generateSymbol( .ok => {}, .fail => |em| return Result{ .fail = em }, } - } - if (layout.padding > 0) { - try code.writer().writeByteNTimes(0, layout.padding); + if (layout.padding > 0) { + try code.writer().writeByteNTimes(0, layout.padding); + } } }, .memoized_call => unreachable, |
