diff options
| author | Owen Anderson <resistor@mac.com> | 2010-08-31 07:55:56 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2010-08-31 07:55:56 +0000 |
| commit | ce401be7922a523fcb3e084f823e3112e6f23bca (patch) | |
| tree | 523575ff29b77cde6b3b63f5bbe3ea09d111b7ab | |
| parent | b70dc8777eb40029f252de02862068190b06d818 (diff) | |
| download | bcm5719-llvm-ce401be7922a523fcb3e084f823e3112e6f23bca.tar.gz bcm5719-llvm-ce401be7922a523fcb3e084f823e3112e6f23bca.zip | |
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.
llvm-svn: 112594
| -rw-r--r-- | llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp b/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp index 9616b9b6ade..a62eb20a88e 100644 --- a/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp +++ b/llvm/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; } |

