[llvm-commits] [llvm] r78106 - /llvm/trunk/lib/CodeGen/RegisterScavenging.cpp

Jakob Stoklund Olesen stoklund at 2pi.dk
Tue Aug 4 14:29:33 PDT 2009


Author: stoklund
Date: Tue Aug  4 16:29:11 2009
New Revision: 78106

URL: http://llvm.org/viewvc/llvm-project?rev=78106&view=rev
Log:
Don't give implicit machine operands special treatment in the register scavenger.

Imp-def is *not* allowed to redefine a live register.
Imp-use is *not* allowed to use a dead register.

Modified:
    llvm/trunk/lib/CodeGen/RegisterScavenging.cpp

Modified: llvm/trunk/lib/CodeGen/RegisterScavenging.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterScavenging.cpp?rev=78106&r1=78105&r2=78106&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/RegisterScavenging.cpp (original)
+++ llvm/trunk/lib/CodeGen/RegisterScavenging.cpp Tue Aug  4 16:29:11 2009
@@ -226,7 +226,7 @@
     const MachineOperand MO = *UseMOs[i].first;
     unsigned Reg = MO.getReg();
 
-    assert((MO.isImplicit() || isUsed(Reg)) && "Using an undefined register!");
+    assert(isUsed(Reg) && "Using an undefined register!");
 
     if (MO.isKill() && !isReserved(Reg)) {
       KillRegs.set(Reg);
@@ -276,10 +276,7 @@
     if (RedefinesSuperRegPart(MI, MO, TRI))
       continue;
 
-    // Implicit def is allowed to "re-define" any register. Similarly,
-    // implicitly defined registers can be clobbered.
-    assert((MO.isImplicit() || isReserved(Reg) || isUnused(Reg) ||
-            isSuperRegUsed(Reg) ||
+    assert((isReserved(Reg) || isUnused(Reg) || isSuperRegUsed(Reg) ||
             isLiveInButUnusedBefore(Reg, MI, MBB, TRI, MRI)) &&
            "Re-defining a live register!");
     setUsed(Reg);





More information about the llvm-commits mailing list