summaryrefslogtreecommitdiff
path: root/lib
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 /lib
parentda2ae63206bcf6856f9d717862508b94213c2336 (diff)
downloadllvm-7c37f6d2d9d7fe0327e1de5e0dcda729a73d2a6f.tar.gz
llvm-7c37f6d2d9d7fe0327e1de5e0dcda729a73d2a6f.tar.bz2
llvm-7c37f6d2d9d7fe0327e1de5e0dcda729a73d2a6f.tar.xz
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
Diffstat (limited to 'lib')
-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;
}