[llvm-commits] CVS: llvm/lib/CodeGen/VirtRegMap.cpp

Evan Cheng evan.cheng at apple.com
Wed Feb 28 18:27:46 PST 2007



Changes in directory llvm/lib/CodeGen:

VirtRegMap.cpp updated: 1.100 -> 1.101
---
Log message:

A restore is promoted to copy (or deleted entirely), remove the kill from the last use of the targetted register.

---
Diffs of the changes:  (+4 -3)

 VirtRegMap.cpp |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)


Index: llvm/lib/CodeGen/VirtRegMap.cpp
diff -u llvm/lib/CodeGen/VirtRegMap.cpp:1.100 llvm/lib/CodeGen/VirtRegMap.cpp:1.101
--- llvm/lib/CodeGen/VirtRegMap.cpp:1.100	Sun Feb 25 03:51:27 2007
+++ llvm/lib/CodeGen/VirtRegMap.cpp	Wed Feb 28 20:27:30 2007
@@ -855,14 +855,15 @@
               } else
                 DOUT << "Removing now-noop copy: " << MI;
 
-              // Extend the live range of the MI that last kill the register if
-              // the next MI reuse it.
+              // Either way, the live range of the last kill of InReg has been
+              // extended. Remove its kill.
               MachineOperand *MOK = SSMI->findRegisterUseOperand(InReg, true);
               if (MOK && NextMII != MBB.end()) {
+                MOK->unsetIsKill();
+                // If NextMII uses InReg (must be the copy?), mark it killed.
                 MachineOperand *MOU = NextMII->findRegisterUseOperand(InReg);
                 if (MOU) {
                   MOU->setIsKill();
-                  MOK->unsetIsKill();
                   Spills.UpdateLastUse(InReg, &(*NextMII));
                 }
               }






More information about the llvm-commits mailing list