From: Daniel Berlin Date: Fri, 19 Aug 2016 22:06:23 +0000 (+0000) Subject: Convert some depth first traversals to depth_first X-Git-Tag: android-x86-7.1-r4~28290 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=36caf71b7903f96387f75325143f9e0a1a4d01be;p=android-x86%2Fexternal-llvm.git Convert some depth first traversals to depth_first git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279331 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/NaryReassociate.cpp b/lib/Transforms/Scalar/NaryReassociate.cpp index 5bde45f1779..e2081f7bb8f 100644 --- a/lib/Transforms/Scalar/NaryReassociate.cpp +++ b/lib/Transforms/Scalar/NaryReassociate.cpp @@ -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::nodes_begin(DT); - Node != GraphTraits::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); diff --git a/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp b/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp index e0180fb8a03..961a3c1c19c 100644 --- a/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp +++ b/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp @@ -1150,14 +1150,9 @@ bool SeparateConstOffsetFromGEP::reuniteExts(Instruction *I) { bool SeparateConstOffsetFromGEP::reuniteExts(Function &F) { bool Changed = false; DominatingExprs.clear(); - for (auto Node = GraphTraits::nodes_begin(DT); - Node != GraphTraits::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; } diff --git a/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp b/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp index a4da5fe2335..a914517e7fe 100644 --- a/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp +++ b/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp @@ -674,11 +674,9 @@ bool StraightLineStrengthReduce::runOnFunction(Function &F) { SE = &getAnalysis().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::nodes_begin(DT); - node != GraphTraits::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.