[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