summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/ScalarEvolution.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-07-28 00:28:25 +0000
committerDan Gohman <gohman@apple.com>2010-07-28 00:28:25 +0000
commit8aeb0fb5cad64aeeac8a703d881e727d57027d4b (patch)
tree9161b634a4c52807c0f8d276e170c8184c72e0ae /llvm/lib/Analysis/ScalarEvolution.cpp
parent53afc8f06af1db2e52498441b82f96bea283a6f6 (diff)
downloadbcm5719-llvm-8aeb0fb5cad64aeeac8a703d881e727d57027d4b.tar.gz
bcm5719-llvm-8aeb0fb5cad64aeeac8a703d881e727d57027d4b.zip
Make SCEVCallbackVH::allUsesReplacedWith unconditionally delete
the old value. llvm-svn: 109567
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolution.cpp')
-rw-r--r--llvm/lib/Analysis/ScalarEvolution.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 7199a66e4c1..82f25f27860 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -5699,7 +5699,6 @@ void ScalarEvolution::SCEVCallbackVH::allUsesReplacedWith(Value *) {
SmallVector<User *, 16> Worklist;
SmallPtrSet<User *, 8> Visited;
Value *Old = getValPtr();
- bool DeleteOld = false;
for (Value::use_iterator UI = Old->use_begin(), UE = Old->use_end();
UI != UE; ++UI)
Worklist.push_back(*UI);
@@ -5707,10 +5706,8 @@ void ScalarEvolution::SCEVCallbackVH::allUsesReplacedWith(Value *) {
User *U = Worklist.pop_back_val();
// Deleting the Old value will cause this to dangle. Postpone
// that until everything else is done.
- if (U == Old) {
- DeleteOld = true;
+ if (U == Old)
continue;
- }
if (!Visited.insert(U))
continue;
if (PHINode *PN = dyn_cast<PHINode>(U))
@@ -5720,14 +5717,11 @@ void ScalarEvolution::SCEVCallbackVH::allUsesReplacedWith(Value *) {
UI != UE; ++UI)
Worklist.push_back(*UI);
}
- // Delete the Old value if it (indirectly) references itself.
- if (DeleteOld) {
- if (PHINode *PN = dyn_cast<PHINode>(Old))
- SE->ConstantEvolutionLoopExitValue.erase(PN);
- SE->Scalars.erase(Old);
- // this now dangles!
- }
- // this may dangle!
+ // Delete the Old value.
+ if (PHINode *PN = dyn_cast<PHINode>(Old))
+ SE->ConstantEvolutionLoopExitValue.erase(PN);
+ SE->Scalars.erase(Old);
+ // this now dangles!
}
ScalarEvolution::SCEVCallbackVH::SCEVCallbackVH(Value *V, ScalarEvolution *se)
OpenPOWER on IntegriCloud