summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2007-07-25 22:19:40 +0000
committerOwen Anderson <resistor@mac.com>2007-07-25 22:19:40 +0000
commit87074125939e93cc8b996e64905d10c601466a29 (patch)
tree1ace92c553202c6a1c9bb4a0a09998062bb4409c /llvm/lib
parent3c67004d47b315513bc9a19294d258efb35dc377 (diff)
downloadbcm5719-llvm-87074125939e93cc8b996e64905d10c601466a29.tar.gz
bcm5719-llvm-87074125939e93cc8b996e64905d10c601466a29.zip
My last commit was not correct for nested loops. Fix it, and add a testcase for it.
llvm-svn: 40498
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/Scalar/GVN.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/GVN.cpp b/llvm/lib/Transforms/Scalar/GVN.cpp
index eb12abe243c..f3aa7960f66 100644
--- a/llvm/lib/Transforms/Scalar/GVN.cpp
+++ b/llvm/lib/Transforms/Scalar/GVN.cpp
@@ -731,6 +731,7 @@ Value *GVN::performPHIConstruction(BasicBlock *BB, LoadInst* orig,
} else {
PHINode *PN = new PHINode(orig->getType(), orig->getName()+".rle", BB->begin());
PN->reserveOperandSpace(numPreds);
+ Phis[BB] = PN;
visited.insert(BB);
// Fill in the incoming values for the block.
@@ -738,7 +739,7 @@ Value *GVN::performPHIConstruction(BasicBlock *BB, LoadInst* orig,
if (!visited.count(*PI))
PN->addIncoming(performPHIConstruction(*PI, orig, Phis, visited), *PI);
else
- PN->addIncoming(PN, *PI);
+ PN->addIncoming(Phis[*PI], *PI);
visited.erase(BB);
bool all_same = PN->getNumIncomingValues() != 1;
@@ -748,6 +749,7 @@ Value *GVN::performPHIConstruction(BasicBlock *BB, LoadInst* orig,
if (all_same) {
PN->eraseFromParent();
+ Phis[BB] = first;
return first;
} else {
return PN;
OpenPOWER on IntegriCloud