Oop - r150653 + r150654 broke one of my test cases. Backing out for now...

llvm-svn: 150655
This commit is contained in:
Lang Hames 2012-02-16 02:32:10 +00:00
parent 11ca986b17
commit 55a2a96153
2 changed files with 4 additions and 9 deletions

View File

@ -63,8 +63,6 @@ namespace {
virtual void releaseMemory() { virtual void releaseMemory() {
ScopeMap.clear(); ScopeMap.clear();
Exps.clear(); Exps.clear();
AllocatableRegs.clear();
ReservedRegs.clear();
} }
private: private:
@ -78,8 +76,6 @@ namespace {
ScopedHTType VNT; ScopedHTType VNT;
SmallVector<MachineInstr*, 64> Exps; SmallVector<MachineInstr*, 64> Exps;
unsigned CurrVN; unsigned CurrVN;
BitVector AllocatableRegs;
BitVector ReservedRegs;
bool PerformTrivialCoalescing(MachineInstr *MI, MachineBasicBlock *MBB); bool PerformTrivialCoalescing(MachineInstr *MI, MachineBasicBlock *MBB);
bool isPhysDefTriviallyDead(unsigned Reg, bool isPhysDefTriviallyDead(unsigned Reg,
@ -240,9 +236,9 @@ bool MachineCSE::PhysRegDefsReach(MachineInstr *CSMI, MachineInstr *MI,
return false; return false;
for (unsigned i = 0, e = PhysDefs.size(); i != e; ++i) { for (unsigned i = 0, e = PhysDefs.size(); i != e; ++i) {
if (AllocatableRegs.test(PhysDefs[i]) || ReservedRegs.test(PhysDefs[i])) if (TRI->isInAllocatableClass(PhysDefs[i]))
// Avoid extending live range of physical registers if they are // Avoid extending live range of physical registers unless
//allocatable or reserved. // they are unallocatable.
return false; return false;
} }
CrossMBB = true; CrossMBB = true;
@ -592,7 +588,5 @@ bool MachineCSE::runOnMachineFunction(MachineFunction &MF) {
MRI = &MF.getRegInfo(); MRI = &MF.getRegInfo();
AA = &getAnalysis<AliasAnalysis>(); AA = &getAnalysis<AliasAnalysis>();
DT = &getAnalysis<MachineDominatorTree>(); DT = &getAnalysis<MachineDominatorTree>();
AllocatableRegs = TRI->getAllocatableSet(MF);
ReservedRegs = TRI->getReservedRegs(MF);
return PerformCSE(DT->getRootNode()); return PerformCSE(DT->getRootNode());
} }

View File

@ -79,6 +79,7 @@ getReservedRegs(const MachineFunction &MF) const {
BitVector Reserved(getNumRegs()); BitVector Reserved(getNumRegs());
Reserved.set(ARM::SP); Reserved.set(ARM::SP);
Reserved.set(ARM::PC); Reserved.set(ARM::PC);
Reserved.set(ARM::FPSCR);
if (TFI->hasFP(MF)) if (TFI->hasFP(MF))
Reserved.set(FramePtr); Reserved.set(FramePtr);
if (hasBasePointer(MF)) if (hasBasePointer(MF))