40 void runOnOperation()
override {
41 markAllAnalysesPreserved();
43 auto &cga = getAnalysis<llzk::CallGraphAnalysis>();
52 void runOnOperation()
override {
53 markAllAnalysesPreserved();
56 auto &CG = getAnalysis<llzk::CallGraphAnalysis>();
58 os <<
"SCCs for the program in PostOrder:";
59 for (
auto SCCI = llvm::scc_begin<const llzk::CallGraph *>(&CG.getCallGraph()); !SCCI.isAtEnd();
61 const std::vector<const llzk::CallGraphNode *> &nextSCC = *SCCI;
62 os <<
"\nSCC #" << ++sccNum <<
": ";
70 if (CGN->isExternal()) {
71 os <<
"external node";
73 os << CGN->getCalledFunction().getFullyQualifiedName();
77 if (nextSCC.size() == 1 && SCCI.hasCycle()) {
78 os <<
" (Has self-loop).";