diff options
author | Chris Lattner <sabre@nondot.org> | 2003-10-05 03:26:25 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-10-05 03:26:25 +0000 |
commit | 036f1e7478ed7b104fe4a5b895377796a20b9222 (patch) | |
tree | 2a7049066d8c7d03c3333a317ea094737a716792 | |
parent | 9e38fbf57feef1e6680c0aed64b1d919b4e01626 (diff) | |
download | external_llvm-036f1e7478ed7b104fe4a5b895377796a20b9222.zip external_llvm-036f1e7478ed7b104fe4a5b895377796a20b9222.tar.gz external_llvm-036f1e7478ed7b104fe4a5b895377796a20b9222.tar.bz2 |
The PhiNodes 2D vector is only used during PHI node placement. It doesn't
need to be an instance variable!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8860 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/Utils/PromoteMemoryToRegister.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp index 7dd2dcd..dae22da 100644 --- a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp +++ b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp @@ -62,10 +62,6 @@ namespace { // VersionNumbers - Current version counters for each alloca std::vector<unsigned> VersionNumbers; - // PhiNodes - Each alloca contains a list of basic blocks which contain PHI - // nodes for the alloca. - std::vector<std::vector<BasicBlock*> > PhiNodes; - // NewPhiNodes - The PhiNodes we're adding. std::map<BasicBlock*, std::vector<PHINode*> > NewPhiNodes; @@ -90,7 +86,6 @@ void PromoteMem2Reg::run() { Function &F = *DF.getRoot()->getParent(); VersionNumbers.resize(Allocas.size()); - PhiNodes.resize(Allocas.size()); for (unsigned i = 0; i != Allocas.size(); ++i) { AllocaInst *AI = Allocas[i]; @@ -110,6 +105,10 @@ void PromoteMem2Reg::run() { AllocaLookup[Allocas[i]] = i; + // PhiNodeBlocks - A list of blocks that phi nodes have been inserted for + // this alloca. + std::vector<BasicBlock*> PhiNodeBlocks; + // Compute the locations where PhiNodes need to be inserted. Look at the // dominance frontier of EACH basic-block we have a write in. // @@ -120,19 +119,20 @@ void PromoteMem2Reg::run() { const DominanceFrontier::DomSetType &S = it->second; for (DominanceFrontier::DomSetType::iterator P = S.begin(),PE = S.end(); P != PE; ++P) - QueuePhiNode(*P, i); + if (QueuePhiNode(*P, i)) + PhiNodeBlocks.push_back(*P); } } // Perform iterative step - std::vector<BasicBlock*> &AllocaPhiNodes = PhiNodes[i]; - for (unsigned k = 0; k != AllocaPhiNodes.size(); k++) { - DominanceFrontier::const_iterator it = DF.find(AllocaPhiNodes[k]); + for (unsigned k = 0; k != PhiNodeBlocks.size(); k++) { + DominanceFrontier::const_iterator it = DF.find(PhiNodeBlocks[k]); if (it != DF.end()) { const DominanceFrontier::DomSetType &S = it->second; for (DominanceFrontier::DomSetType::iterator P = S.begin(), PE = S.end(); P != PE; ++P) - QueuePhiNode(*P, i); + if (QueuePhiNode(*P, i)) + PhiNodeBlocks.push_back(*P); } } } @@ -198,7 +198,6 @@ bool PromoteMem2Reg::QueuePhiNode(BasicBlock *BB, unsigned AllocaNo) { PN->addIncoming(NullVal, Preds[i]); BBPNs[AllocaNo] = PN; - PhiNodes[AllocaNo].push_back(BB); return true; } |