| ... | ... | @@ -558,7 +558,7 @@ pub fn generateSymbol( |
| 558 | 558 | } |
| 559 | 559 | |
| 560 | 560 | // Check if we should store the tag first. |
| 561 | | if (layout.tag_align >= layout.payload_align) { |
| 561 | if (layout.tag_size > 0 and layout.tag_align >= layout.payload_align) { |
| 562 | 562 | switch (try generateSymbol(bin_file, src_loc, .{ |
| 563 | 563 | .ty = typed_value.ty.unionTagType(mod).?, |
| 564 | 564 | .val = un.tag.toValue(), |
| ... | ... | @@ -589,7 +589,7 @@ pub fn generateSymbol( |
| 589 | 589 | } |
| 590 | 590 | } |
| 591 | 591 | |
| 592 | | if (layout.tag_size > 0) { |
| 592 | if (layout.tag_size > 0 and layout.tag_align < layout.payload_align) { |
| 593 | 593 | switch (try generateSymbol(bin_file, src_loc, .{ |
| 594 | 594 | .ty = union_ty.tag_ty, |
| 595 | 595 | .val = un.tag.toValue(), |
| ... | ... | @@ -597,10 +597,10 @@ pub fn generateSymbol( |
| 597 | 597 | .ok => {}, |
| 598 | 598 | .fail => |em| return Result{ .fail = em }, |
| 599 | 599 | } |
| 600 | | } |
| 601 | 600 | |
| 602 | | if (layout.padding > 0) { |
| 603 | | try code.writer().writeByteNTimes(0, layout.padding); |
| 601 | if (layout.padding > 0) { |
| 602 | try code.writer().writeByteNTimes(0, layout.padding); |
| 603 | } |
| 604 | 604 | } |
| 605 | 605 | }, |
| 606 | 606 | .memoized_call => unreachable, |