StrongPHIElimination requires LiveVariables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43751 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Owen Anderson 2007-11-06 04:49:43 +00:00
parent 000604afd4
commit a4ad2e740a

View File

@ -37,23 +37,22 @@ namespace {
static char ID; // Pass identification, replacement for typeid
StrongPHIElimination() : MachineFunctionPass((intptr_t)&ID) {}
bool runOnMachineFunction(MachineFunction &Fn) {
computeDFS(Fn);
return false;
}
bool runOnMachineFunction(MachineFunction &Fn);
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addPreserved<LiveVariables>();
AU.addPreservedID(PHIEliminationID);
AU.addRequired<MachineDominatorTree>();
AU.addRequired<LiveVariables>();
AU.setPreservesAll();
MachineFunctionPass::getAnalysisUsage(AU);
}
virtual void releaseMemory() {
preorder.clear();
maxpreorder.clear();
waiting.clear();
}
private:
@ -72,15 +71,23 @@ namespace {
parent->addChild(this);
}
MachineInstr* getInstr() { return instr; }
~DomForestNode() {
for (iterator I = begin(), E = end(); I != E; ++I)
delete *I;
}
DomForestNode::iterator begin() { return children.begin(); }
DomForestNode::iterator end() { return children.end(); }
inline MachineInstr* getInstr() { return instr; }
inline DomForestNode::iterator begin() { return children.begin(); }
inline DomForestNode::iterator end() { return children.end(); }
};
DenseMap<MachineBasicBlock*, unsigned> preorder;
DenseMap<MachineBasicBlock*, unsigned> maxpreorder;
DenseMap<MachineBasicBlock*, std::vector<MachineInstr*> > waiting;
void computeDFS(MachineFunction& MF);
std::vector<DomForestNode*>
@ -198,3 +205,10 @@ StrongPHIElimination::computeDomForest(SmallPtrSet<MachineInstr*, 8>& instrs) {
ret.insert(ret.end(), VirtualRoot->begin(), VirtualRoot->end());
return ret;
}
bool StrongPHIElimination::runOnMachineFunction(MachineFunction &Fn) {
computeDFS(Fn);
return false;
}