aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-05-19 03:12:34 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2023-06-25 19:14:03 -0400
commit3f13987a761ed805656bec3b8e4db591a1cbc8ed (patch)
treedd29f1ff5aea5c55ef53e579e72441217da1a1db /src
parente13aa915b20db3f5521f5f280ba0bd9b1a79f1c0 (diff)
downloadzig-3f13987a761ed805656bec3b8e4db591a1cbc8ed.tar.gz
zig-3f13987a761ed805656bec3b8e4db591a1cbc8ed.zip
x86_64: add missing padding to global unions
Diffstat (limited to 'src')
-rw-r--r--src/codegen.zig10
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,