diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig index 16a4b4a7f4267a3a0133fab1eda1615443f91d5d..4501a01c66ff14f10056eb733dc8616733c9260d 100644 --- a/src/arch/x86_64/CodeGen.zig +++ b/src/arch/x86_64/CodeGen.zig @@ -4877,11 +4877,14 @@ fn airWrapOptional(self: *Self, inst: Air.Inst.Index) !void { switch (opt_mcv) { else => unreachable, - .register => |opt_reg| try self.asmRegisterImmediate( - .{ ._s, .bt }, - opt_reg, - Immediate.u(@as(u6, @intCast(pl_abi_size * 8))), - ), + .register => |opt_reg| { + try self.truncateRegister(pl_ty, opt_reg); + try self.asmRegisterImmediate( + .{ ._s, .bt }, + opt_reg, + Immediate.u(@as(u6, @intCast(pl_abi_size * 8))), + ); + }, .load_frame => |frame_addr| try self.asmMemoryImmediate( .{ ._, .mov },