diff options
| author | Heejin Ahn <aheejin@gmail.com> | 2019-03-05 21:05:09 +0000 | 
|---|---|---|
| committer | Heejin Ahn <aheejin@gmail.com> | 2019-03-05 21:05:09 +0000 | 
| commit | 5c644c9bcaacd3da1d9a0f220427033a94d456c8 (patch) | |
| tree | 8b3a06fd48ce0ff4bcfbc09793e04ded81d726cc /llvm/lib | |
| parent | d15f3b188bf728e0e7bff64163e29dfbee030965 (diff) | |
| download | bcm5719-llvm-5c644c9bcaacd3da1d9a0f220427033a94d456c8.tar.gz bcm5719-llvm-5c644c9bcaacd3da1d9a0f220427033a94d456c8.zip  | |
[WebAssembly] Simplify iterator navigations (NFC)
Summary:
- Replaces some uses of `MachineFunction::iterator(MBB)` with
  `MBB->getIterator()` and `MachineBasicBlock::iterator(MI)` with
  `MI->getIterator()`, which are simpler.
- Replaces some uses of `std::prev` of `std::next` that takes a
  MachineFunction or MachineBasicBlock iterator with `getPrevNode` and
  `getNextNode`, which are also simpler.
Reviewers: sbc100
Subscribers: dschuff, sunfish, jgravelle-google, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D58913
llvm-svn: 355444
Diffstat (limited to 'llvm/lib')
5 files changed, 15 insertions, 21 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp index 35ca7b9753b..6002885b9e9 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp @@ -229,7 +229,7 @@ void WebAssemblyCFGStackify::placeBlockMarker(MachineBasicBlock &MBB) {      return;    assert(&MBB != &MF.front() && "Header blocks shouldn't have predecessors"); -  MachineBasicBlock *LayoutPred = &*std::prev(MachineFunction::iterator(&MBB)); +  MachineBasicBlock *LayoutPred = MBB.getPrevNode();    // If the nearest common dominator is inside a more deeply nested context,    // walk out to the nearest scope which isn't more deeply nested. @@ -237,7 +237,7 @@ void WebAssemblyCFGStackify::placeBlockMarker(MachineBasicBlock &MBB) {      if (MachineBasicBlock *ScopeTop = ScopeTops[I->getNumber()]) {        if (ScopeTop->getNumber() > Header->getNumber()) {          // Skip over an intervening scope. -        I = std::next(MachineFunction::iterator(ScopeTop)); +        I = std::next(ScopeTop->getIterator());        } else {          // We found a scope level at an appropriate depth.          Header = ScopeTop; @@ -259,8 +259,7 @@ void WebAssemblyCFGStackify::placeBlockMarker(MachineBasicBlock &MBB) {      // the BLOCK.      if (MI.getOpcode() == WebAssembly::LOOP ||          MI.getOpcode() == WebAssembly::TRY) { -      auto *BottomBB = -          &*std::prev(MachineFunction::iterator(BeginToEnd[&MI]->getParent())); +      auto *BottomBB = BeginToEnd[&MI]->getParent()->getPrevNode();        if (MBB.getNumber() > BottomBB->getNumber())          AfterSet.insert(&MI);  #ifndef NDEBUG @@ -373,13 +372,13 @@ void WebAssemblyCFGStackify::placeLoopMarker(MachineBasicBlock &MBB) {    // The operand of a LOOP is the first block after the loop. If the loop is the    // bottom of the function, insert a dummy block at the end.    MachineBasicBlock *Bottom = WebAssembly::getBottom(Loop); -  auto Iter = std::next(MachineFunction::iterator(Bottom)); +  auto Iter = std::next(Bottom->getIterator());    if (Iter == MF.end()) {      MachineBasicBlock *Label = MF.CreateMachineBasicBlock();      // Give it a fake predecessor so that AsmPrinter prints its label.      Label->addSuccessor(Label);      MF.push_back(Label); -    Iter = std::next(MachineFunction::iterator(Bottom)); +    Iter = std::next(Bottom->getIterator());    }    MachineBasicBlock *AfterLoop = &*Iter; @@ -457,19 +456,18 @@ void WebAssemblyCFGStackify::placeTryMarker(MachineBasicBlock &MBB) {    assert(WE);    MachineBasicBlock *Bottom = WebAssembly::getBottom(WE); -  auto Iter = std::next(MachineFunction::iterator(Bottom)); +  auto Iter = std::next(Bottom->getIterator());    if (Iter == MF.end()) {      MachineBasicBlock *Label = MF.CreateMachineBasicBlock();      // Give it a fake predecessor so that AsmPrinter prints its label.      Label->addSuccessor(Label);      MF.push_back(Label); -    Iter = std::next(MachineFunction::iterator(Bottom)); +    Iter = std::next(Bottom->getIterator());    }    MachineBasicBlock *Cont = &*Iter;    assert(Cont != &MF.front()); -  MachineBasicBlock *LayoutPred = -      &*std::prev(MachineFunction::iterator(Cont)); +  MachineBasicBlock *LayoutPred = Cont->getPrevNode();    // If the nearest common dominator is inside a more deeply nested context,    // walk out to the nearest scope which isn't more deeply nested. @@ -477,7 +475,7 @@ void WebAssemblyCFGStackify::placeTryMarker(MachineBasicBlock &MBB) {      if (MachineBasicBlock *ScopeTop = ScopeTops[I->getNumber()]) {        if (ScopeTop->getNumber() > Header->getNumber()) {          // Skip over an intervening scope. -        I = std::next(MachineFunction::iterator(ScopeTop)); +        I = std::next(ScopeTop->getIterator());        } else {          // We found a scope level at an appropriate depth.          Header = ScopeTop; @@ -633,8 +631,7 @@ void WebAssemblyCFGStackify::removeUnnecessaryInstrs(MachineFunction &MF) {      MachineBasicBlock *TBB = nullptr, *FBB = nullptr;      SmallVector<MachineOperand, 4> Cond; -    MachineBasicBlock *EHPadLayoutPred = -        &*std::prev(MachineFunction::iterator(&MBB)); +    MachineBasicBlock *EHPadLayoutPred = MBB.getPrevNode();      MachineBasicBlock *Cont = BeginToEnd[EHPadToTry[&MBB]]->getParent();      bool Analyzable = !TII.analyzeBranch(*EHPadLayoutPred, TBB, FBB, Cond);      if (Analyzable && ((Cond.empty() && TBB && TBB == Cont) || @@ -663,8 +660,7 @@ void WebAssemblyCFGStackify::removeUnnecessaryInstrs(MachineFunction &MF) {        MachineBasicBlock *TryBB = Try->getParent();        MachineBasicBlock *Cont = EndTry->getParent();        int64_t RetType = Try->getOperand(0).getImm(); -      for (auto B = MachineBasicBlock::iterator(Try), -                E = std::next(MachineBasicBlock::iterator(EndTry)); +      for (auto B = Try->getIterator(), E = std::next(EndTry->getIterator());             B != TryBB->begin() && E != Cont->end() &&             std::prev(B)->getOpcode() == WebAssembly::BLOCK &&             E->getOpcode() == WebAssembly::END_BLOCK && diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp index 8494737d43d..d1bb8a7097a 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp @@ -274,7 +274,7 @@ bool WebAssemblyExplicitLocals::runOnMachineFunction(MachineFunction &MF) {          if (!MFI.isVRegStackified(OldReg)) {            const TargetRegisterClass *RC = MRI.getRegClass(OldReg);            unsigned NewReg = MRI.createVirtualRegister(RC); -          auto InsertPt = std::next(MachineBasicBlock::iterator(&MI)); +          auto InsertPt = std::next(MI.getIterator());            if (MI.getOpcode() == WebAssembly::IMPLICIT_DEF) {              MI.eraseFromParent();              Changed = true; diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFixIrreducibleControlFlow.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyFixIrreducibleControlFlow.cpp index 17fb8e19091..f6481549716 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyFixIrreducibleControlFlow.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyFixIrreducibleControlFlow.cpp @@ -319,8 +319,7 @@ bool LoopFixer::run() {        // This is a successor we need to rewrite.        MachineBasicBlock *Split = MF.CreateMachineBasicBlock(); -      MF.insert(MBB->isLayoutSuccessor(Succ) ? MachineFunction::iterator(Succ) -                                             : MF.end(), +      MF.insert(MBB->isLayoutSuccessor(Succ) ? Succ->getIterator() : MF.end(),                  Split);        MLI.changeLoopFor(Split, Loop); diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp index 2ade6ab1c83..6c5a5ab9ea5 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp @@ -358,8 +358,7 @@ static MachineBasicBlock *LowerFPToInt(MachineInstr &MI, DebugLoc DL,    F->insert(It, DoneMBB);    // Transfer the remainder of BB and its successor edges to DoneMBB. -  DoneMBB->splice(DoneMBB->begin(), BB, -                  std::next(MachineBasicBlock::iterator(MI)), BB->end()); +  DoneMBB->splice(DoneMBB->begin(), BB, std::next(MI.getIterator()), BB->end());    DoneMBB->transferSuccessorsAndUpdatePHIs(BB);    BB->addSuccessor(TrueMBB); diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp index d4612b85889..6cda1cc64dd 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp @@ -132,7 +132,7 @@ bool WebAssemblyLateEHPrepare::removeUnnecessaryUnreachables(        // another BB that should eventually lead to an unreachable. Delete it        // because throw itself is a terminator, and also delete successors if        // any. -      MBB.erase(std::next(MachineBasicBlock::iterator(MI)), MBB.end()); +      MBB.erase(std::next(MI.getIterator()), MBB.end());        SmallVector<MachineBasicBlock *, 8> Succs(MBB.succ_begin(),                                                  MBB.succ_end());        for (auto *Succ : Succs)  | 

