[llvm] [CodeGen][CodeLayout] Fix segfault on access to deleted block in MBP. (PR #142357)

Afanasyev Ivan via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 2 16:27:26 PDT 2025


ivafanas wrote:

> From function `markBlockSuccessors`, a BB can be added to `BlockWorkList` only when `UnscheduledPredecessors` reaches 0. So how was B added to BlockWorkList in the first place?

Yes, it is a bit tricky:

* When block `B'` is added to the work list, it belongs to the chain with zero `UnscheduledPredecessors `
* When block `B'` is chosen as the best successor, it is merged into `FunctionChain` inside `BlockChain::merge` method. `FunctionChain` has non-zero `UnscheduledPredecessor`.

Work lists might contain blocks from chains with non-zero `UnscheduledPredecessor`. It happens for scheduled blocks which should be removed from work lists soon. However, postponed removal comes to play.

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


More information about the llvm-commits mailing list