diff options
author | Chris Lattner <sabre@nondot.org> | 2003-10-05 04:33:22 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-10-05 04:33:22 +0000 |
commit | 3c881cb4ce4adc1765378360ba6383bdd64287f3 (patch) | |
tree | c36dbf85a9e73c6c17ab534ff21ec9ad7ad982fb /lib/Transforms/Utils/PromoteMemoryToRegister.cpp | |
parent | afa060ea3ff93eb99bafd41e593707cee3b9afa3 (diff) |
The VersionNumbers vector is only used during PHI placement. Turn it into an argument, allowing us to get rid of the vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8864 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/PromoteMemoryToRegister.cpp')
-rw-r--r-- | lib/Transforms/Utils/PromoteMemoryToRegister.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp index 82d8afc528..0fa4a6a4b2 100644 --- a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp +++ b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp @@ -49,9 +49,6 @@ namespace { // AllocaLookup - Reverse mapping of Allocas std::map<AllocaInst*, unsigned> AllocaLookup; - // VersionNumbers - Current version counters for each alloca - std::vector<unsigned> VersionNumbers; - // NewPhiNodes - The PhiNodes we're adding. std::map<BasicBlock*, std::vector<PHINode*> > NewPhiNodes; @@ -67,15 +64,13 @@ namespace { private: void RenamePass(BasicBlock *BB, BasicBlock *Pred, std::vector<Value*> &IncVals); - bool QueuePhiNode(BasicBlock *BB, unsigned AllocaIdx); + bool QueuePhiNode(BasicBlock *BB, unsigned AllocaIdx, unsigned &Version); }; } // end of anonymous namespace void PromoteMem2Reg::run() { Function &F = *DF.getRoot()->getParent(); - VersionNumbers.resize(Allocas.size()); - for (unsigned i = 0; i != Allocas.size(); ++i) { AllocaInst *AI = Allocas[i]; @@ -101,6 +96,7 @@ void PromoteMem2Reg::run() { // Compute the locations where PhiNodes need to be inserted. Look at the // dominance frontier of EACH basic-block we have a write in. // + unsigned CurrentVersion = 0; while (!DefiningBlocks.empty()) { BasicBlock *BB = DefiningBlocks.back(); DefiningBlocks.pop_back(); @@ -111,7 +107,7 @@ void PromoteMem2Reg::run() { const DominanceFrontier::DomSetType &S = it->second; for (DominanceFrontier::DomSetType::iterator P = S.begin(),PE = S.end(); P != PE; ++P) - if (QueuePhiNode(*P, i)) + if (QueuePhiNode(*P, i, CurrentVersion)) DefiningBlocks.push_back(*P); } } @@ -199,7 +195,8 @@ void PromoteMem2Reg::run() { // QueuePhiNode - queues a phi-node to be added to a basic-block for a specific // Alloca returns true if there wasn't already a phi-node for that variable // -bool PromoteMem2Reg::QueuePhiNode(BasicBlock *BB, unsigned AllocaNo) { +bool PromoteMem2Reg::QueuePhiNode(BasicBlock *BB, unsigned AllocaNo, + unsigned &Version) { // Look up the basic-block in question std::vector<PHINode*> &BBPNs = NewPhiNodes[BB]; if (BBPNs.empty()) BBPNs.resize(Allocas.size()); @@ -211,8 +208,7 @@ bool PromoteMem2Reg::QueuePhiNode(BasicBlock *BB, unsigned AllocaNo) { // BasicBlock. BBPNs[AllocaNo] = new PHINode(Allocas[AllocaNo]->getAllocatedType(), Allocas[AllocaNo]->getName() + "." + - utostr(VersionNumbers[AllocaNo]++), - BB->begin()); + utostr(Version++), BB->begin()); return true; } |