| ... | @@ -821,7 +821,8 @@ const InstTracking = struct { | ... | @@ -821,7 +821,8 @@ const InstTracking = struct { |
| 821 | target: InstTracking, | 821 | target: InstTracking, |
| 822 | ) !void { | 822 | ) !void { |
| 823 | const ty = function.typeOfIndex(inst); | 823 | const ty = function.typeOfIndex(inst); |
| 824 | if ((self.long == .none or self.long == .reserved_frame) and target.long == .load_frame) | 824 | if ((self.long == .none or self.long == .reserved_frame) and |
| | 825 | target.long == .load_frame and target.short != .load_frame) |
| 825 | try function.genCopy(ty, target.long, self.short, .{}); | 826 | try function.genCopy(ty, target.long, self.short, .{}); |
| 826 | try function.genCopy(ty, target.short, self.short, .{}); | 827 | try function.genCopy(ty, target.short, self.short, .{}); |
| 827 | } | 828 | } |
| ... | @@ -174277,8 +174278,9 @@ fn restoreState(self: *CodeGen, state: State, deaths: []const Air.Inst.Index, co | ... | @@ -174277,8 +174278,9 @@ fn restoreState(self: *CodeGen, state: State, deaths: []const Air.Inst.Index, co |
| 174277 | if (opts.emit_instructions and current_maybe_inst != target_maybe_inst) { | 174278 | if (opts.emit_instructions and current_maybe_inst != target_maybe_inst) { |
| 174278 | if (current_maybe_inst) |current_inst| | 174279 | if (current_maybe_inst) |current_inst| |
| 174279 | try self.inst_tracking.getPtr(current_inst).?.spill(self, current_inst); | 174280 | try self.inst_tracking.getPtr(current_inst).?.spill(self, current_inst); |
| 174280 | if (target_maybe_inst) |target_inst| | 174281 | if (target_maybe_inst) |target_inst| for (reg_tracking.getRegs()) |source_reg| { |
| 174281 | try self.inst_tracking.getPtr(target_inst).?.materialize(self, target_inst, reg_tracking); | 174282 | if (RegisterManager.indexOfRegIntoTracked(source_reg).? > reg_index) break; |
| | 174283 | } else try self.inst_tracking.getPtr(target_inst).?.materialize(self, target_inst, reg_tracking); |
| 174282 | } | 174284 | } |
| 174283 | if (opts.update_tracking) { | 174285 | if (opts.update_tracking) { |
| 174284 | if (current_maybe_inst) |current_inst| { | 174286 | if (current_maybe_inst) |current_inst| { |