Changes in directory llvm/lib/Transforms/Scalar:
GCSE.cpp updated: 1.46 -> 1.47 LoopStrengthReduce.cpp updated: 1.71 -> 1.72 --- Log message: Switch these to using ETForest instead of DominatorSet to compute itself. Patch written by Daniel Berlin! --- Diffs of the changes: (+11 -10) GCSE.cpp | 6 +++--- LoopStrengthReduce.cpp | 15 ++++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) Index: llvm/lib/Transforms/Scalar/GCSE.cpp diff -u llvm/lib/Transforms/Scalar/GCSE.cpp:1.46 llvm/lib/Transforms/Scalar/GCSE.cpp:1.47 --- llvm/lib/Transforms/Scalar/GCSE.cpp:1.46 Thu Apr 21 18:45:12 2005 +++ llvm/lib/Transforms/Scalar/GCSE.cpp Tue Jan 10 23:10:20 2006 @@ -45,7 +45,7 @@ // This transformation requires dominator and immediate dominator info virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesCFG(); - AU.addRequired<DominatorSet>(); + AU.addRequired<ETForest>(); AU.addRequired<DominatorTree>(); AU.addRequired<ValueNumbering>(); } @@ -64,7 +64,7 @@ bool Changed = false; // Get pointers to the analysis results that we will be using... - DominatorSet &DS = getAnalysis<DominatorSet>(); + ETForest &EF = getAnalysis<ETForest>(); ValueNumbering &VN = getAnalysis<ValueNumbering>(); DominatorTree &DT = getAnalysis<DominatorTree>(); @@ -141,7 +141,7 @@ if (OtherI->getParent() == BB) Dominates = BlockInsts.count(OtherI); else - Dominates = DS.dominates(OtherI->getParent(), BB); + Dominates = EF.dominates(OtherI->getParent(), BB); if (Dominates) { // Okay, we found an instruction with the same value as this one Index: llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp diff -u llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:1.71 llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:1.72 --- llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:1.71 Mon Dec 5 12:23:57 2005 +++ llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp Tue Jan 10 23:10:20 2006 @@ -77,7 +77,7 @@ class LoopStrengthReduce : public FunctionPass { LoopInfo *LI; - DominatorSet *DS; + ETForest *EF; ScalarEvolution *SE; const TargetData *TD; const Type *UIntPtrTy; @@ -111,7 +111,7 @@ virtual bool runOnFunction(Function &) { LI = &getAnalysis<LoopInfo>(); - DS = &getAnalysis<DominatorSet>(); + EF = &getAnalysis<ETForest>(); SE = &getAnalysis<ScalarEvolution>(); TD = &getAnalysis<TargetData>(); UIntPtrTy = TD->getIntPtrType(); @@ -129,13 +129,14 @@ AU.addPreservedID(LoopSimplifyID); AU.addPreserved<LoopInfo>(); AU.addPreserved<DominatorSet>(); + AU.addPreserved<ETForest>(); AU.addPreserved<ImmediateDominators>(); AU.addPreserved<DominanceFrontier>(); AU.addPreserved<DominatorTree>(); AU.addRequiredID(LoopSimplifyID); AU.addRequired<LoopInfo>(); - AU.addRequired<DominatorSet>(); + AU.addRequired<ETForest>(); AU.addRequired<TargetData>(); AU.addRequired<ScalarEvolution>(); } @@ -324,7 +325,7 @@ /// the loop, resulting in reg-reg copies (if we use the pre-inc value when we /// should use the post-inc value). static bool IVUseShouldUsePostIncValue(Instruction *User, Instruction *IV, - Loop *L, DominatorSet *DS, Pass *P) { + Loop *L, ETForest *EF, Pass *P) { // If the user is in the loop, use the preinc value. if (L->contains(User->getParent())) return false; @@ -332,7 +333,7 @@ // Ok, the user is outside of the loop. If it is dominated by the latch // block, use the post-inc value. - if (DS->dominates(LatchBlock, User->getParent())) + if (EF->dominates(LatchBlock, User->getParent())) return true; // There is one case we have to be careful of: PHI nodes. These little guys @@ -349,7 +350,7 @@ for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) if (PN->getIncomingValue(i) == IV) { ++NumUses; - if (!DS->dominates(LatchBlock, PN->getIncomingBlock(i))) + if (!EF->dominates(LatchBlock, PN->getIncomingBlock(i))) return false; } @@ -415,7 +416,7 @@ // Okay, we found a user that we cannot reduce. Analyze the instruction // and decide what to do with it. If we are a use inside of the loop, use // the value before incrementation, otherwise use it after incrementation. - if (IVUseShouldUsePostIncValue(User, I, L, DS, this)) { + if (IVUseShouldUsePostIncValue(User, I, L, EF, this)) { // The value used will be incremented by the stride more than we are // expecting, so subtract this off. SCEVHandle NewStart = SCEV::getMinusSCEV(Start, Stride); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits