diff options
author | Devang Patel <dpatel@apple.com> | 2007-06-07 23:53:38 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2007-06-07 23:53:38 +0000 |
commit | 6ea7ac6a1e36f4ea44c77e5d008b0f4d2379c529 (patch) | |
tree | 72dad29ba5bb861fba9f3ce4a98bfffc16dc1a0c /lib/Analysis/LoadValueNumbering.cpp | |
parent | e029b2c36907a77c895e4d646c0e91f18a6dd162 (diff) |
Use DominatorTree instead of ETForest.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37505 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/LoadValueNumbering.cpp')
-rw-r--r-- | lib/Analysis/LoadValueNumbering.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/Analysis/LoadValueNumbering.cpp b/lib/Analysis/LoadValueNumbering.cpp index ad5dd20761..f1ade951f3 100644 --- a/lib/Analysis/LoadValueNumbering.cpp +++ b/lib/Analysis/LoadValueNumbering.cpp @@ -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 |