zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit e3160ec573882108e2b51cefcf3abc5b346f70c0 (tree)
parent 0728847ce74aace8fe8e2a8f61da09002cd4ad7e
Author: Jakub Konka <kubkon@jakubkonka.com>
Date:   Thu,  5 May 2022 21:35:59 +0200

x64: mul_with_overflow: cannot reuse operand if not the result

Diffstat:
Msrc/arch/x86_64/CodeGen.zig | 5+----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig @@ -1496,11 +1496,8 @@ fn airMulWithOverflow(self: *Self, inst: Air.Inst.Index) !void { rhs.freezeIfRegister(&self.register_manager); defer rhs.unfreezeIfRegister(&self.register_manager); - // TODO check if we could reuse rhs instead, and swap the values out. const dst_reg: Register = blk: { - if (self.reuseOperand(inst, bin_op.lhs, 0, lhs)) { - if (lhs.isRegister()) break :blk lhs.register; - } + if (lhs.isRegister()) break :blk lhs.register; break :blk try self.copyToTmpRegister(ty, lhs); }; self.register_manager.freezeRegs(&.{dst_reg});