diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/StructurizeCFG.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/StructurizeCFG.cpp | 18 | 
1 files changed, 6 insertions, 12 deletions
diff --git a/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp b/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp index d6ad0831f79..1d93374be9e 100644 --- a/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp +++ b/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp @@ -175,7 +175,7 @@ class StructurizeCFG : public RegionPass {    DominatorTree *DT;    LoopInfo *LI; -  RNVector Order; +  SmallVector<RegionNode *, 8> Order;    BBSet Visited;    BBPhiMap DeletedPhis; @@ -288,17 +288,13 @@ bool StructurizeCFG::doInitialization(Region *R, RGPassManager &RGM) {  /// \brief Build up the general order of nodes  void StructurizeCFG::orderNodes() { -  RNVector TempOrder;    ReversePostOrderTraversal<Region*> RPOT(ParentRegion); -  TempOrder.append(RPOT.begin(), RPOT.end()); - -  std::map<Loop*, unsigned> LoopBlocks; - +  SmallDenseMap<Loop*, unsigned, 8> LoopBlocks;    // The reverse post-order traversal of the list gives us an ordering close    // to what we want.  The only problem with it is that sometimes backedges    // for outer loops will be visited before backedges for inner loops. -  for (RegionNode *RN : TempOrder) { +  for (RegionNode *RN : RPOT) {      BasicBlock *BB = RN->getEntry();      Loop *Loop = LI->getLoopFor(BB);      ++LoopBlocks[Loop]; @@ -306,8 +302,7 @@ void StructurizeCFG::orderNodes() {    unsigned CurrentLoopDepth = 0;    Loop *CurrentLoop = nullptr; -  BBSet TempVisited; -  for (RNVector::iterator I = TempOrder.begin(), E = TempOrder.end(); I != E; ++I) { +  for (auto I = RPOT.begin(), E = RPOT.end(); I != E; ++I) {      BasicBlock *BB = (*I)->getEntry();      unsigned LoopDepth = LI->getLoopDepth(BB); @@ -318,7 +313,7 @@ void StructurizeCFG::orderNodes() {        // Make sure we have visited all blocks in this loop before moving back to        // the outer loop. -      RNVector::iterator LoopI = I; +      auto LoopI = I;        while (unsigned &BlockCount = LoopBlocks[CurrentLoop]) {          LoopI++;          BasicBlock *LoopBB = (*LoopI)->getEntry(); @@ -330,9 +325,8 @@ void StructurizeCFG::orderNodes() {      }      CurrentLoop = LI->getLoopFor(BB); -    if (CurrentLoop) { +    if (CurrentLoop)        LoopBlocks[CurrentLoop]--; -    }      CurrentLoopDepth = LoopDepth;      Order.push_back(*I);  | 

