diff --git a/src/codegen/insertPhiMoves.go b/src/codegen/insertPhiMoves.go index a87753d..1d6ade2 100644 --- a/src/codegen/insertPhiMoves.go +++ b/src/codegen/insertPhiMoves.go @@ -65,6 +65,10 @@ func (f *Function) insertPhiMoves(step *Step) { destination := move.Destination switch { + case f.isSpilled(source) && f.isSpilled(destination): + tmp := f.findTempRegister(step.Live) + f.loadSpill(sourceSteps[source], tmp) + f.storeSpill(destinationSteps[destination], tmp) case f.isSpilled(source): f.loadSpill(sourceSteps[source], destination) case f.isSpilled(destination):