[llvm-commits] CVS: llvm/lib/Transforms/Scalar/GCSE.cpp LoopStrengthReduce.cpp

Chris Lattner lattner at cs.uiuc.edu
Tue Jan 10 21:10:32 PST 2006



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);






More information about the llvm-commits mailing list