diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-03-21 11:16:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-21 11:16:29 +0100 |
| commit | 515e1c93e18d81435410f2cb45f3788c6be13fbf (patch) | |
| tree | 10dbb755d5323d9ca4fd3ddfb88c78a8bd980ce7 /src/codegen.zig | |
| parent | dff4bbfd2426ce4943972782d2bcffc89b3fd26d (diff) | |
| parent | c58b5732f381fe4f145537501e29347be01e2a44 (diff) | |
| download | zig-515e1c93e18d81435410f2cb45f3788c6be13fbf.tar.gz zig-515e1c93e18d81435410f2cb45f3788c6be13fbf.zip | |
Merge pull request #14993 from jacobly0/x86_64
x86_64: implement more operations
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index a91795841c..c48200e845 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -608,7 +608,6 @@ pub fn generateSymbol( const payload_type = typed_value.ty.optionalChild(&opt_buf); const is_pl = !typed_value.val.isNull(); const abi_size = math.cast(usize, typed_value.ty.abiSize(target)) orelse return error.Overflow; - const offset = abi_size - (math.cast(usize, payload_type.abiSize(target)) orelse return error.Overflow); if (!payload_type.hasRuntimeBits()) { try code.writer().writeByteNTimes(@boolToInt(is_pl), abi_size); @@ -639,8 +638,8 @@ pub fn generateSymbol( return Result.ok; } + const padding = abi_size - (math.cast(usize, payload_type.abiSize(target)) orelse return error.Overflow) - 1; const value = if (typed_value.val.castTag(.opt_payload)) |payload| payload.data else Value.initTag(.undef); - try code.writer().writeByteNTimes(@boolToInt(is_pl), offset); switch (try generateSymbol(bin_file, src_loc, .{ .ty = payload_type, .val = value, @@ -648,6 +647,8 @@ pub fn generateSymbol( .ok => {}, .fail => |em| return Result{ .fail = em }, } + try code.writer().writeByte(@boolToInt(is_pl)); + try code.writer().writeByteNTimes(0, padding); return Result.ok; }, |
