From: Owen Anderson Date: Tue, 6 Nov 2007 04:49:43 +0000 (+0000) Subject: StrongPHIElimination requires LiveVariables. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=a4ad2e740ac7727229ee0b47affb2e7efae085eb;p=oota-llvm.git StrongPHIElimination requires LiveVariables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43751 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/StrongPHIElimination.cpp b/lib/CodeGen/StrongPHIElimination.cpp index a9625e24d3c..51a2ef944d0 100644 --- a/lib/CodeGen/StrongPHIElimination.cpp +++ b/lib/CodeGen/StrongPHIElimination.cpp @@ -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(); AU.addPreservedID(PHIEliminationID); AU.addRequired(); + AU.addRequired(); + 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 preorder; DenseMap maxpreorder; + DenseMap > waiting; + + void computeDFS(MachineFunction& MF); std::vector @@ -198,3 +205,10 @@ StrongPHIElimination::computeDomForest(SmallPtrSet& instrs) { ret.insert(ret.end(), VirtualRoot->begin(), VirtualRoot->end()); return ret; } + +bool StrongPHIElimination::runOnMachineFunction(MachineFunction &Fn) { + computeDFS(Fn); + + + return false; +}