aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-03-21 11:16:29 +0100
committerGitHub <noreply@github.com>2023-03-21 11:16:29 +0100
commit515e1c93e18d81435410f2cb45f3788c6be13fbf (patch)
tree10dbb755d5323d9ca4fd3ddfb88c78a8bd980ce7 /src/codegen.zig
parentdff4bbfd2426ce4943972782d2bcffc89b3fd26d (diff)
parentc58b5732f381fe4f145537501e29347be01e2a44 (diff)
downloadzig-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.zig5
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;
},