[llvm-commits] [llvm] r114105 - /llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
Owen Anderson
resistor at mac.com
Thu Sep 16 11:35:07 PDT 2010
Author: resistor
Date: Thu Sep 16 13:35:07 2010
New Revision: 114105
URL: http://llvm.org/viewvc/llvm-project?rev=114105&view=rev
Log:
Use a depth-first iteratation in CorrelatedValuePropagation to avoid wasting time trying
to optimize unreachable blocks.
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=114105&r1=114104&r2=114105&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp Thu Sep 16 13:35:07 2010
@@ -19,6 +19,7 @@
#include "llvm/Analysis/LazyValueInfo.h"
#include "llvm/Support/CFG.h"
#include "llvm/Transforms/Utils/Local.h"
+#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/Statistic.h"
using namespace llvm;
@@ -166,7 +167,10 @@
bool FnChanged = false;
- for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) {
+ // Perform a depth-first walk of the CFG so that we don't waste time
+ // optimizing unreachable blocks.
+ for (df_iterator<BasicBlock*> FI = df_begin(&F.getEntryBlock()),
+ FE = df_end(&F.getEntryBlock()); FI != FE; ++FI) {
bool BBChanged = false;
for (BasicBlock::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ) {
Instruction *II = BI++;
@@ -191,7 +195,7 @@
// Propagating correlated values might leave cruft around.
// Try to clean it up before we continue.
if (BBChanged)
- SimplifyInstructionsInBlock(FI);
+ SimplifyInstructionsInBlock(*FI);
FnChanged |= BBChanged;
}
More information about the llvm-commits
mailing list