Skip to content

Commit e8135aa

Browse files
committed
[MLIR][CF] Do not bail out early in collapseBranch to avoid regression (#159743)
Bailing out as soon as a cycle is detected causes a regression in flang, where the test expects more optimizations than we allowed on an infinite loop. We may be able to adjust this testcase.
1 parent 44d52d3 commit e8135aa

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

mlir/lib/Dialect/ControlFlow/IR/ControlFlowOps.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,13 @@ static LogicalResult collapseBranch(Block *&successor,
124124
return failure();
125125
// Don't try to collapse branches which participate in a cycle.
126126
BranchOp nextBranch = dyn_cast<BranchOp>(successorDest->getTerminator());
127-
llvm::DenseSet<Block *> visited{successor, successorDest};
127+
llvm::DenseSet<Block *> visited{successorDest};
128128
while (nextBranch) {
129129
Block *nextBranchDest = nextBranch.getDest();
130-
if (visited.contains(nextBranchDest))
130+
if (nextBranchDest == successor)
131131
return failure();
132+
else if (visited.contains(nextBranchDest))
133+
break;
132134
visited.insert(nextBranchDest);
133135
nextBranch = dyn_cast<BranchOp>(nextBranchDest->getTerminator());
134136
}

0 commit comments

Comments
 (0)