[llvm] [CodeGen] Search predecessors from the back in removePredecessor() (PR #206070)

Reid Kleckner via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 26 21:18:28 PDT 2026


================
@@ -936,9 +936,10 @@ void MachineBasicBlock::addPredecessor(MachineBasicBlock *Pred) {
 }
 
 void MachineBasicBlock::removePredecessor(MachineBasicBlock *Pred) {
-  pred_iterator I = find(Predecessors, Pred);
-  assert(I != Predecessors.end() && "Pred is not a predecessor of this block!");
-  Predecessors.erase(I);
+  auto RI = llvm::find(reverse(Predecessors), Pred);
----------------
rnk wrote:

```suggestion
  // This is often called on many predecessors in reverse order.
  // Do a reverse search and removal to avoid quadratic behavior in such cases.
  auto RI = llvm::find(reverse(Predecessors), Pred);
```

https://github.com/llvm/llvm-project/pull/206070


More information about the llvm-commits mailing list