[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