llvm-project
697bd970 - Give each mlir::Block a stable ID within its parent region (#207617)

Commit
12 days ago
Give each mlir::Block a stable ID within its parent region (#207617) Assign each mlir::Block a stable ID within its parent region, mirroring llvm::BasicBlock/llvm::Function (called ID, not number, since a block/op number denotes position in MLIR): Block gains getBlockID() and reads -1u while it has no parent region; Region gains nextBlockID with getMaxBlockID() and getBlockIDEpoch(); the block ilist traits assign the ID on add/transfer and invalidate it on removal; and GraphTraits<mlir::Block*>/<mlir::Region*> expose getNumber/getMaxNumber/getNumberEpoch. This makes GraphHasNodeNumbers<mlir::Block*> true, moving MLIR's CFGLoopInfo and dominator tree onto the number-indexed path. MLIR never renumbers blocks, so the epoch is a fixed 0. Prerequisite for requiring GraphHasNodeNumbers in llvm::LoopInfoBase and dropping its DenseMap fallback. Aided by Claude Opus 4.8
Author
Parents
Loading