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