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