From 3c881cb4ce4adc1765378360ba6383bdd64287f3 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 5 Oct 2003 04:33:22 +0000 Subject: [PATCH] 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 --- lib/Transforms/Utils/PromoteMemoryToRegister.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp index 82d8afc5289..0fa4a6a4b23 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 AllocaLookup; - // VersionNumbers - Current version counters for each alloca - std::vector VersionNumbers; - // NewPhiNodes - The PhiNodes we're adding. std::map > NewPhiNodes; @@ -67,15 +64,13 @@ namespace { private: void RenamePass(BasicBlock *BB, BasicBlock *Pred, std::vector &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 &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; } -- 2.34.1