[Mlir-commits] [mlir] [mlir][Interfaces][NFC] Add `RegionBranchOpInterface` helper for forwarded values (PR #173981)
lonely eagle
llvmlistbot at llvm.org
Wed Dec 31 16:21:44 PST 2025
================
@@ -251,30 +251,16 @@ def RegionBranchOpInterface : OpInterface<"RegionBranchOpInterface"> {
"::llvm::SmallVectorImpl<::mlir::RegionBranchPoint> &":$predecessors),
[{}],
/*defaultImplementation=*/[{
- ::llvm::SmallVector<::mlir::RegionSuccessor> successors;
- $_op.getSuccessorRegions(RegionBranchPoint::parent(),
- successors);
- if (llvm::any_of(successors, [&] (const RegionSuccessor & succ) {
+ auto op = cast<RegionBranchOpInterface>($_op.getOperation());
+ for (::mlir::RegionBranchPoint point : op.getAllRegionBranchPoints()) {
+ ::llvm::SmallVector<::mlir::RegionSuccessor> successors;
+ op.getSuccessorRegions(point, successors);
+ bool isPred = llvm::any_of(successors, [&] (const auto &succ) {
return succ.getSuccessor() == successor.getSuccessor() ||
- (succ.isParent() && successor.isParent());
- }))
- predecessors.push_back(RegionBranchPoint::parent());
- for (Region ®ion : $_op->getRegions()) {
- for (::mlir::Block &block : region) {
- if (block.empty())
- continue;
- if (auto terminator =
- dyn_cast<RegionBranchTerminatorOpInterface>(block.back())) {
- ::llvm::SmallVector<::mlir::RegionSuccessor> successors;
- $_op.getSuccessorRegions(RegionBranchPoint(terminator),
- successors);
- if (llvm::any_of(successors, [&] (const RegionSuccessor & succ) {
- return succ.getSuccessor() == successor.getSuccessor() ||
- (succ.isParent() && successor.isParent());
----------------
linuxlonelyeagle wrote:
Yes, the isPred here is actually comparing the region*. I think I have understood these lines of code now.Thanks.
https://github.com/llvm/llvm-project/pull/173981
More information about the Mlir-commits
mailing list