From a36f46363f2e1205c17ff92b63412ea26ac65fb3 Mon Sep 17 00:00:00 2001 From: Daniel Berlin Date: Fri, 19 Aug 2016 22:06:23 +0000 Subject: [PATCH] Convert some depth first traversals to depth_first llvm-svn: 279331 --- llvm/lib/Transforms/Scalar/NaryReassociate.cpp | 10 +++++----- llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp | 11 +++-------- llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp | 6 ++---- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/NaryReassociate.cpp b/llvm/lib/Transforms/Scalar/NaryReassociate.cpp index 5bde45f..e2081f7 100644 --- a/llvm/lib/Transforms/Scalar/NaryReassociate.cpp +++ b/llvm/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/llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp b/llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp index e0180fb..961a3c1 100644 --- a/llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp +++ b/llvm/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/llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp index a4da5fe..a914517 100644 --- a/llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp +++ b/llvm/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. -- 2.7.4