[llvm-commits] [llvm] r150769 - in /llvm/trunk/lib: CodeGen/MachineCSE.cpp Target/ARM/ARMBaseRegisterInfo.cpp
Lang Hames
lhames at gmail.com
Thu Feb 16 16:27:16 PST 2012
Author: lhames
Date: Thu Feb 16 18:27:16 2012
New Revision: 150769
URL: http://llvm.org/viewvc/llvm-project?rev=150769&view=rev
Log:
Re-enable 150652 and 150654 - Make FPSCR non-reserved, and make MachineCSE bail on reserved registers. This *should* be safe as of r150786.
Modified:
llvm/trunk/lib/CodeGen/MachineCSE.cpp
llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
Modified: llvm/trunk/lib/CodeGen/MachineCSE.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineCSE.cpp?rev=150769&r1=150768&r2=150769&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MachineCSE.cpp (original)
+++ llvm/trunk/lib/CodeGen/MachineCSE.cpp Thu Feb 16 18:27:16 2012
@@ -63,6 +63,8 @@
virtual void releaseMemory() {
ScopeMap.clear();
Exps.clear();
+ AllocatableRegs.clear();
+ ReservedRegs.clear();
}
private:
@@ -76,6 +78,8 @@
ScopedHTType VNT;
SmallVector<MachineInstr*, 64> Exps;
unsigned CurrVN;
+ BitVector AllocatableRegs;
+ BitVector ReservedRegs;
bool PerformTrivialCoalescing(MachineInstr *MI, MachineBasicBlock *MBB);
bool isPhysDefTriviallyDead(unsigned Reg,
@@ -236,9 +240,9 @@
return false;
for (unsigned i = 0, e = PhysDefs.size(); i != e; ++i) {
- if (TRI->isInAllocatableClass(PhysDefs[i]))
- // Avoid extending live range of physical registers unless
- // they are unallocatable.
+ if (AllocatableRegs.test(PhysDefs[i]) || ReservedRegs.test(PhysDefs[i]))
+ // Avoid extending live range of physical registers if they are
+ //allocatable or reserved.
return false;
}
CrossMBB = true;
@@ -588,5 +592,7 @@
MRI = &MF.getRegInfo();
AA = &getAnalysis<AliasAnalysis>();
DT = &getAnalysis<MachineDominatorTree>();
+ AllocatableRegs = TRI->getAllocatableSet(MF);
+ ReservedRegs = TRI->getReservedRegs(MF);
return PerformCSE(DT->getRootNode());
}
Modified: llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp?rev=150769&r1=150768&r2=150769&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp Thu Feb 16 18:27:16 2012
@@ -79,7 +79,6 @@
BitVector Reserved(getNumRegs());
Reserved.set(ARM::SP);
Reserved.set(ARM::PC);
- Reserved.set(ARM::FPSCR);
if (TFI->hasFP(MF))
Reserved.set(FramePtr);
if (hasBasePointer(MF))
More information about the llvm-commits
mailing list