Make the legalizer completely non-recursive
[oota-llvm.git] / lib / CodeGen / VirtRegMap.cpp
index 633cf2bf8decc979c3d5b43820fa3b8369dafbbe..f7306c5d0a238f14572008f3dd58df911a6f0309 100644 (file)
@@ -490,11 +490,11 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, const VirtRegMap &VRM) {
             if (DestReg != It->second) {
               MRI->copyRegToReg(MBB, &MI, DestReg, It->second,
                                 MF.getSSARegMap()->getRegClass(VirtReg));
-              // Revisit the copy if the destination is a vreg.
-              if (MRegisterInfo::isVirtualRegister(DestReg)) {
-                NextMII = &MI;
-                --NextMII;  // backtrack to the copy.
-              }
+              // Revisit the copy so we make sure to notice the effects of the
+              // operation on the destreg (either needing to RA it if it's 
+              // virtual or needing to clobber any values if it's physical).
+              NextMII = &MI;
+              --NextMII;  // backtrack to the copy.
             }
             MBB.erase(&MI);
             goto ProcessNextInst;