mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-04-27 19:09:47 +03:00
x86_64: use correct alias for register constraints stored in registers
Closes #31722
This commit is contained in:
committed by
Andrew Kelley
parent
dd10d3fb52
commit
4059242f44
@@ -177226,9 +177226,19 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
|
||||
'x' => abi.RegisterClass.sse,
|
||||
else => unreachable,
|
||||
};
|
||||
if (input_mcv.isRegister() and
|
||||
rc.isSet(RegisterManager.indexOfRegIntoTracked(input_mcv.getReg().?).?))
|
||||
break :arg input_mcv;
|
||||
if (input_mcv.isRegister()) {
|
||||
const reg = input_mcv.getReg().?;
|
||||
if (rc.isSet(RegisterManager.indexOfRegIntoTracked(reg).?)) {
|
||||
const alias = registerAlias(reg, @intCast(ty.abiSize(zcu)));
|
||||
break :arg switch (input_mcv) {
|
||||
else => unreachable,
|
||||
.register => .{ .register = alias },
|
||||
.register_offset => |reg_off| .{
|
||||
.register_offset = .{ .reg = alias, .off = reg_off.off },
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
const reg = try self.register_manager.allocReg(null, rc);
|
||||
try self.genSetReg(reg, ty, input_mcv, .{});
|
||||
break :arg .{ .register = registerAlias(reg, @intCast(ty.abiSize(zcu))) };
|
||||
|
||||
Reference in New Issue
Block a user