mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 21:08:36 +00:00
stage2: sparc64: Proper handling of compare flags
This commit is contained in:
parent
9db81fee5d
commit
3220e0b61c
@ -2029,6 +2029,7 @@ fn binOpImmediate(
|
||||
defer if (new_lhs_lock) |reg| self.register_manager.unlockReg(reg);
|
||||
|
||||
const dest_reg = switch (mir_tag) {
|
||||
.cmp => undefined, // cmp has no destination register
|
||||
else => if (metadata) |md| blk: {
|
||||
if (lhs_is_register and self.reuseOperand(
|
||||
md.inst,
|
||||
@ -2148,6 +2149,7 @@ fn binOpRegister(
|
||||
defer if (new_rhs_lock) |reg| self.register_manager.unlockReg(reg);
|
||||
|
||||
const dest_reg = switch (mir_tag) {
|
||||
.cmp => undefined, // cmp has no destination register
|
||||
else => if (metadata) |md| blk: {
|
||||
if (lhs_is_register and self.reuseOperand(md.inst, md.lhs, 0, lhs)) {
|
||||
break :blk lhs_reg;
|
||||
@ -3064,6 +3066,10 @@ fn processDeath(self: *Self, inst: Air.Inst.Index) void {
|
||||
.register => |reg| {
|
||||
self.register_manager.freeReg(reg);
|
||||
},
|
||||
.register_with_overflow => |rwo| {
|
||||
self.register_manager.freeReg(rwo.reg);
|
||||
self.compare_flags_inst = null;
|
||||
},
|
||||
.compare_flags_signed, .compare_flags_unsigned => {
|
||||
self.compare_flags_inst = null;
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user