Index: llvm/trunk/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp =================================================================== --- llvm/trunk/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp +++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp @@ -91,12 +91,15 @@ SmallVector WL(MBBs.begin(), MBBs.end()); while (!WL.empty()) { MachineBasicBlock *MBB = WL.pop_back_val(); - for (auto *Pred : MBB->predecessors()) + SmallVector Preds(MBB->pred_begin(), + MBB->pred_end()); + for (auto *Pred : Preds) Pred->removeSuccessor(MBB); - for (auto *Succ : MBB->successors()) { - WL.push_back(Succ); + SmallVector Succs(MBB->succ_begin(), + MBB->succ_end()); + WL.append(MBB->succ_begin(), MBB->succ_end()); + for (auto *Succ : Succs) MBB->removeSuccessor(Succ); - } MBB->eraseFromParent(); } }