[llvm-commits] [llvm] r112625 - /llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
Owen Anderson
resistor at mac.com
Tue Aug 31 11:55:52 PDT 2010
Author: resistor
Date: Tue Aug 31 13:55:52 2010
New Revision: 112625
URL: http://llvm.org/viewvc/llvm-project?rev=112625&view=rev
Log:
Only try to clean up the current block if we changed that block already.
Modified:
llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp?rev=112625&r1=112624&r2=112625&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp Tue Aug 31 13:55:52 2010
@@ -100,19 +100,25 @@
bool CorrelatedValuePropagation::runOnFunction(Function &F) {
LVI = &getAnalysis<LazyValueInfo>();
- bool Changed = false;
+ bool FnChanged = false;
for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) {
+ bool BBChanged = false;
for (BasicBlock::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ) {
Instruction *II = BI++;
if (SelectInst *SI = dyn_cast<SelectInst>(II))
- Changed |= processSelect(SI);
+ BBChanged |= processSelect(SI);
else if (PHINode *P = dyn_cast<PHINode>(II))
- Changed |= processPHI(P);
+ BBChanged |= processPHI(P);
}
- SimplifyInstructionsInBlock(FI);
+ // Propagating correlated values might leave cruft around.
+ // Try to clean it up before we continue.
+ if (BBChanged)
+ SimplifyInstructionsInBlock(FI);
+
+ FnChanged |= BBChanged;
}
- return Changed;
+ return FnChanged;
}
More information about the llvm-commits
mailing list