Use DominatorTree instead of ETForest.
authorDevang Patel <dpatel@apple.com>
Thu, 7 Jun 2007 23:53:38 +0000 (23:53 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 7 Jun 2007 23:53:38 +0000 (23:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37505 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/LoadValueNumbering.cpp

index ad5dd20761e88571e47c06fcf056e64c07685909..f1ade951f34b79e5f9e93dd276a340ef9a12a357 100644 (file)
@@ -101,7 +101,7 @@ void LoadVN::getAnalysisUsage(AnalysisUsage &AU) const {
   AU.setPreservesAll();
   AU.addRequiredTransitive<AliasAnalysis>();
   AU.addRequired<ValueNumbering>();
-  AU.addRequiredTransitive<ETForest>();
+  AU.addRequiredTransitive<DominatorTree>();
   AU.addRequiredTransitive<TargetData>();
 }
 
@@ -201,20 +201,20 @@ void LoadVN::getCallEqualNumberNodes(CallInst *CI,
   // ANY memory.
   //
   if (MRB == AliasAnalysis::OnlyReadsMemory) {
-    ETForest &EF = getAnalysis<ETForest>();
+    DominatorTree &DT = getAnalysis<DominatorTree>();
     BasicBlock *CIBB = CI->getParent();
     for (unsigned i = 0; i != IdenticalCalls.size(); ++i) {
       CallInst *C = IdenticalCalls[i];
       bool CantEqual = false;
 
-      if (EF.dominates(CIBB, C->getParent())) {
+      if (DT.dominates(CIBB, C->getParent())) {
         // FIXME: we currently only handle the case where both calls are in the
         // same basic block.
         if (CIBB != C->getParent()) {
           CantEqual = true;
         } else {
           Instruction *First = CI, *Second = C;
-          if (!EF.dominates(CI, C))
+          if (!DT.dominates(CI, C))
             std::swap(First, Second);
 
           // Scan the instructions between the calls, checking for stores or
@@ -239,7 +239,7 @@ void LoadVN::getCallEqualNumberNodes(CallInst *CI,
           }
         }
 
-      } else if (EF.dominates(C->getParent(), CIBB)) {
+      } else if (DT.dominates(C->getParent(), CIBB)) {
         // FIXME: We could implement this, but we don't for now.
         CantEqual = true;
       } else {
@@ -380,7 +380,7 @@ void LoadVN::getEqualNumberNodes(Value *V,
     }
 
   // Get dominators.
-  ETForest &EF = getAnalysis<ETForest>();
+  DominatorTree &DT = getAnalysis<DominatorTree>();
 
   // TransparentBlocks - For each basic block the load/store is alive across,
   // figure out if the pointer is invalidated or not.  If it is invalidated, the
@@ -399,12 +399,12 @@ void LoadVN::getEqualNumberNodes(Value *V,
     // Right now we only can handle cases where one load dominates the other.
     // FIXME: generalize this!
     BasicBlock *BB1 = I->first, *BB2 = LoadBB;
-    if (EF.dominates(BB1, BB2)) {
+    if (DT.dominates(BB1, BB2)) {
       // The other load dominates LI.  If the loaded value is killed entering
       // the LoadBB block, we know the load is not live.
       if (LoadInvalidatedInBBBefore)
         CantEqual = true;
-    } else if (EF.dominates(BB2, BB1)) {
+    } else if (DT.dominates(BB2, BB1)) {
       std::swap(BB1, BB2);          // Canonicalize
       // LI dominates the other load.  If the loaded value is killed exiting
       // the LoadBB block, we know the load is not live.
@@ -486,7 +486,7 @@ void LoadVN::getEqualNumberNodes(Value *V,
 
   for (std::set<BasicBlock*>::iterator I = CandidateStores.begin(),
          E = CandidateStores.end(); I != E; ++I)
-    if (EF.dominates(*I, LoadBB)) {
+    if (DT.dominates(*I, LoadBB)) {
       BasicBlock *StoreBB = *I;
 
       // Check to see if the path from the store to the load is transparent