[llvm] [CoroSplit] Fix infinite loop in CoroSplit (PR #185599)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 10 02:07:14 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-transforms
Author: Felipe de Azevedo Piovezan (felipepiovezan)
<details>
<summary>Changes</summary>
Optimized code may generate an uncoditional branch to the same BB.
---
Full diff: https://github.com/llvm/llvm-project/pull/185599.diff
1 Files Affected:
- (modified) llvm/lib/Transforms/Coroutines/CoroSplit.cpp (+2-1)
``````````diff
diff --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
index 587f581ded8d5..0430d50f642f5 100644
--- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
@@ -819,7 +819,8 @@ static void updateScopeLine(Instruction *ActiveSuspend,
// Corosplit splits the BB around ActiveSuspend, so the meaningful
// instructions are not in the same BB.
while (auto *Branch = dyn_cast_or_null<BranchInst>(Successor)) {
- if (!Branch->isUnconditional())
+ if (!Branch->isUnconditional() ||
+ Branch->getSuccessor(0) == Branch->getParent())
break;
Successor = Branch->getSuccessor(0)->getFirstNonPHIOrDbg();
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/185599
More information about the llvm-commits
mailing list