[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