summaryrefslogtreecommitdiff
path: root/lib/Transforms
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-10-05 04:33:22 +0000
committerChris Lattner <sabre@nondot.org>2003-10-05 04:33:22 +0000
commit3c881cb4ce4adc1765378360ba6383bdd64287f3 (patch)
treec36dbf85a9e73c6c17ab534ff21ec9ad7ad982fb /lib/Transforms
parentafa060ea3ff93eb99bafd41e593707cee3b9afa3 (diff)
downloadllvm-3c881cb4ce4adc1765378360ba6383bdd64287f3.tar.gz
llvm-3c881cb4ce4adc1765378360ba6383bdd64287f3.tar.bz2
llvm-3c881cb4ce4adc1765378360ba6383bdd64287f3.tar.xz
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')
-rw-r--r--lib/Transforms/Utils/PromoteMemoryToRegister.cpp16
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;
}