aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2010-08-31 07:55:56 +0000
committerOwen Anderson <resistor@mac.com>2010-08-31 07:55:56 +0000
commit7c37f6d2d9d7fe0327e1de5e0dcda729a73d2a6f (patch)
tree962865454d44a71166caa778d40fec93124da8f1
parentda2ae63206bcf6856f9d717862508b94213c2336 (diff)
Don't perform an extra traversal of the function just to do cleanup. We can safely simplify instructions after each block has been processed without worrying about iterator invalidation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112594 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Scalar/CorrelatedValuePropagation.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp b/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
index 9616b9b6ad..a62eb20a88 100644
--- a/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
+++ b/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
@@ -102,7 +102,7 @@ bool CorrelatedValuePropagation::runOnFunction(Function &F) {
bool Changed = false;
- for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI)
+ for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) {
for (BasicBlock::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ) {
Instruction *II = BI++;
if (SelectInst *SI = dyn_cast<SelectInst>(II))
@@ -110,10 +110,9 @@ bool CorrelatedValuePropagation::runOnFunction(Function &F) {
else if (PHINode *P = dyn_cast<PHINode>(II))
Changed |= processPHI(P);
}
-
- if (Changed)
- for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI)
- SimplifyInstructionsInBlock(FI);
+
+ SimplifyInstructionsInBlock(FI);
+ }
return Changed;
}