[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