[llvm] [Coroutines][LazyCallGraph] resumes are not really SCC (PR #116285)

Tyler Nowicki via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 10 08:25:17 PST 2025


================
@@ -1720,6 +1720,7 @@ void LazyCallGraph::addSplitRefRecursiveFunctions(
   for (Function *NewFunction : NewFunctions) {
     Node &NewN = initNode(*NewFunction);
 
+    // Make the original function reference each new function
----------------
TylerNowicki wrote:

Your description of the inliner sounds similar to how CoroSplit works. We first call addSplitRefRecursiveFunctions, then remove unreachable blocks (simplify cfg), then call updateCGAndAnalysisManagerForCGSCCPass(). I think if we want to modify addSplitRefRecursiveFunctions such that it builds the RefSCC as it does now, but does NOT insert any fspurious/fake ref edges that is fine. But that means we will create a RefSCC of nodes that are not strongly connected! The change would be to do what I first proposed, just to remove the check that requires the RefSCC to be strongly connected. I will update the PR so you can see what I mean.

https://github.com/llvm/llvm-project/pull/116285


More information about the llvm-commits mailing list