forked from OSchip/llvm-project
Convert some depth first traversals to depth_first
llvm-svn: 279331
This commit is contained in:
parent
0fb33f9690
commit
a36f46363f
|
@ -207,11 +207,11 @@ static bool isPotentiallyNaryReassociable(Instruction *I) {
|
|||
bool NaryReassociatePass::doOneIteration(Function &F) {
|
||||
bool Changed = false;
|
||||
SeenExprs.clear();
|
||||
// Process the basic blocks in pre-order of the dominator tree. This order
|
||||
// ensures that all bases of a candidate are in Candidates when we process it.
|
||||
for (auto Node = GraphTraits<DominatorTree *>::nodes_begin(DT);
|
||||
Node != GraphTraits<DominatorTree *>::nodes_end(DT); ++Node) {
|
||||
BasicBlock *BB = (*Node)->getBlock();
|
||||
// Process the basic blocks in a depth first traversal of the dominator
|
||||
// tree. This order ensures that all bases of a candidate are in Candidates
|
||||
// when we process it.
|
||||
for (const auto Node : depth_first(DT)) {
|
||||
BasicBlock *BB = Node->getBlock();
|
||||
for (auto I = BB->begin(); I != BB->end(); ++I) {
|
||||
if (SE->isSCEVable(I->getType()) && isPotentiallyNaryReassociable(&*I)) {
|
||||
const SCEV *OldSCEV = SE->getSCEV(&*I);
|
||||
|
|
|
@ -1150,14 +1150,9 @@ bool SeparateConstOffsetFromGEP::reuniteExts(Instruction *I) {
|
|||
bool SeparateConstOffsetFromGEP::reuniteExts(Function &F) {
|
||||
bool Changed = false;
|
||||
DominatingExprs.clear();
|
||||
for (auto Node = GraphTraits<DominatorTree *>::nodes_begin(DT);
|
||||
Node != GraphTraits<DominatorTree *>::nodes_end(DT); ++Node) {
|
||||
BasicBlock *BB = (*Node)->getBlock();
|
||||
for (auto I = BB->begin(); I != BB->end(); ) {
|
||||
Instruction *Cur = &*I++;
|
||||
Changed |= reuniteExts(Cur);
|
||||
}
|
||||
}
|
||||
for (const auto Node : depth_first(DT))
|
||||
for (auto &I : *(Node->getBlock()))
|
||||
Changed |= reuniteExts(&I);
|
||||
return Changed;
|
||||
}
|
||||
|
||||
|
|
|
@ -674,11 +674,9 @@ bool StraightLineStrengthReduce::runOnFunction(Function &F) {
|
|||
SE = &getAnalysis<ScalarEvolutionWrapperPass>().getSE();
|
||||
// Traverse the dominator tree in the depth-first order. This order makes sure
|
||||
// all bases of a candidate are in Candidates when we process it.
|
||||
for (auto node = GraphTraits<DominatorTree *>::nodes_begin(DT);
|
||||
node != GraphTraits<DominatorTree *>::nodes_end(DT); ++node) {
|
||||
for (auto &I : *(*node)->getBlock())
|
||||
for (const auto Node : depth_first(DT))
|
||||
for (auto &I : *(Node->getBlock()))
|
||||
allocateCandidatesAndFindBasis(&I);
|
||||
}
|
||||
|
||||
// Rewrite candidates in the reverse depth-first order. This order makes sure
|
||||
// a candidate being rewritten is not a basis for any other candidate.
|
||||
|
|
Loading…
Reference in New Issue