| /llvm-project-15.0.7/llvm/include/llvm/Analysis/ |
| H A D | CGSCCPassManager.h | 112 extern template class AllAnalysesOn<LazyCallGraph::SCC>; 123 AnalysisManager<LazyCallGraph::SCC, LazyCallGraph &>; 131 CGSCCUpdateResult &>::run(LazyCallGraph::SCC &InitialC, 210 ModuleAnalysisManager, LazyCallGraph::SCC, LazyCallGraph &>; 257 SmallPriorityWorklist<LazyCallGraph::SCC *, 1> &CWorklist; 273 SmallPtrSetImpl<LazyCallGraph::SCC *> &InvalidatedSCCs; 283 LazyCallGraph::SCC *UpdatedC; 333 detail::PassConcept<LazyCallGraph::SCC, CGSCCAnalysisManager, 435 LazyCallGraph::SCC &updateCGAndAnalysisManagerForFunctionPass( 446 LazyCallGraph::SCC &updateCGAndAnalysisManagerForCGSCCPass( [all …]
|
| H A D | LazyCallGraph.h | 114 class SCC; variable 419 class LLVM_EXTERNAL_VISIBILITY SCC { 488 bool isParentOf(const SCC &C) const; 496 bool isAncestorOf(const SCC &C) const; 543 SmallVector<SCC *, 4> SCCs; 546 SmallDenseMap<SCC *, int, 4> SCCIndices; 567 for (LazyCallGraph::SCC &C : RC) { 611 iterator find(SCC &C) const { in find() 978 if (SCC *C = lookupSCC(N)) in lookupRefSCC() 1122 SpecificBumpPtrAllocator<SCC> SCCBPA; [all …]
|
| H A D | MLInlineAdvisor.h | 34 void onPassEntry(LazyCallGraph::SCC *SCC) override; 35 void onPassExit(LazyCallGraph::SCC *SCC) override;
|
| H A D | CallGraphSCCPass.h | 59 virtual bool runOnSCC(CallGraphSCC &SCC) = 0; 83 bool skipSCC(CallGraphSCC &SCC) const; 131 bool runOnSCC(CallGraphSCC &SCC) override { return false; } in runOnSCC() argument
|
| /llvm-project-15.0.7/llvm/lib/Analysis/ |
| H A D | CGSCCPassManager.cpp | 49 template class AllAnalysesOn<LazyCallGraph::SCC>; 75 LazyCallGraph::SCC *C = &InitialC; in run() 372 LazyCallGraph::SCC *C = &InitialC; in run() 383 auto ScanSCC = [](LazyCallGraph::SCC &C, in run() 530 LazyCallGraph::SCC *CurrentC = &C; in run() 828 static LazyCallGraph::SCC * 832 using SCC = LazyCallGraph::SCC; in incorporateNewSCCRange() typedef 842 SCC *OldC = C; in incorporateNewSCCRange() 896 using SCC = LazyCallGraph::SCC; in updateCGAndAnalysisManagerForPass() typedef 900 SCC *C = &InitialC; in updateCGAndAnalysisManagerForPass() [all …]
|
| H A D | LazyCallGraph.cpp | 282 bool LazyCallGraph::SCC::isParentOf(const SCC &C) const { in isParentOf() 295 bool LazyCallGraph::SCC::isAncestorOf(const SCC &TargetC) const { in isAncestorOf() 344 for (SCC *C : SCCs) { in verify() 384 for (SCC *C : SCCs) { in verify() 413 for (SCC &C : *this) in isParentOf() 637 for (SCC *C : in switchInternalEdgeToCall() 1043 for (SCC &C : RC) in insertIncomingRefEdge() 1068 for (SCC &C : RC) in insertIncomingRefEdge() 1223 for (SCC *C : SCCs) { in removeInternalRefEdge() 1373 for (SCC *C : SCCs) { in removeInternalRefEdge() [all …]
|
| H A D | SyntheticCountsUtils.cpp | 24 const SccTy &SCC, GetProfCountTy GetProfCount, AddCountTy AddCount) { in propagateFromSCC() argument 29 for (auto &Node : SCC) in propagateFromSCC() 95 for (auto &SCC : reverse(SCCs)) in propagate() local 96 propagateFromSCC(SCC, GetProfCount, AddCount); in propagate()
|
| H A D | GlobalsModRef.cpp | 461 const std::vector<CallGraphNode *> &SCC = *I; in CollectSCCMembership() local 462 assert(!SCC.empty() && "SCC with no functions?"); in CollectSCCMembership() 464 for (auto *CGN : SCC) in CollectSCCMembership() 479 const std::vector<CallGraphNode *> &SCC = *I; in AnalyzeCallGraph() local 480 assert(!SCC.empty() && "SCC with no functions?"); in AnalyzeCallGraph() 482 Function *F = SCC[0]->getFunction(); in AnalyzeCallGraph() 488 for (auto *Node : SCC) in AnalyzeCallGraph() 540 for (CallGraphNode::iterator CI = SCC[i]->begin(), E = SCC[i]->end(); in AnalyzeCallGraph() 550 if (!is_contained(SCC, CalleeNode)) in AnalyzeCallGraph() 561 for (auto *Node : SCC) in AnalyzeCallGraph() [all …]
|
| H A D | CallGraphSCCPass.cpp | 685 bool runOnSCC(CallGraphSCC &SCC) override { in runOnSCC() argument 698 SCC.getCallGraph().getModule().print(OS, nullptr); in runOnSCC() 702 for (CallGraphNode *CGN : SCC) { in runOnSCC() 719 SCC.getCallGraph().getModule().print(OS, nullptr); in runOnSCC() 736 static std::string getDescription(const CallGraphSCC &SCC) { in getDescription() argument 739 for (CallGraphNode *CGN : SCC) { in getDescription() 751 bool CallGraphSCCPass::skipSCC(CallGraphSCC &SCC) const { in skipSCC() 753 SCC.getCallGraph().getModule().getContext().getOptPassGate(); in skipSCC() 754 return Gate.isEnabled() && !Gate.shouldRunPass(this, getDescription(SCC)); in skipSCC()
|
| /llvm-project-15.0.7/llvm/include/llvm/Transforms/Utils/ |
| H A D | CallGraphUpdater.h | 50 LazyCallGraph::SCC *SCC = nullptr; variable 63 void initialize(CallGraph &CG, CallGraphSCC &SCC) { in initialize() argument 65 this->CGSCC = &SCC; in initialize() 67 void initialize(LazyCallGraph &LCG, LazyCallGraph::SCC &SCC, in initialize() argument 70 this->SCC = &SCC; in initialize() 74 &AM.getResult<FunctionAnalysisManagerCGSCCProxy>(SCC, LCG).getManager(); in initialize()
|
| /llvm-project-15.0.7/llvm/test/Transforms/Inline/ |
| H A D | cgscc-cycle-debug.ll | 1 ; When an SCC got split due to inlining, we have two mechanisms for reprocessing the updated SCC, f… 2 ; that repeatedly rerun the new, current SCC; second is a worklist for all newly split SCCs. We nee… 3 ; the same SCC when the SCC is set to be processed by both mechanisms back to back. In pathological… 8 ; of the same caller-callee edge, we could end up getting more recursive inlining without SCC mutat… 13 ; CHECK: Running an SCC pass across the RefSCC: [(test1_a, test1_b, test1_c)] 14 ; CHECK: Enqueuing the existing SCC in the worklist:(test1_b) 15 ; CHECK: Enqueuing a newly formed SCC:(test1_c) 19 ; CHECK: Re-running SCC passes after a refinement of the current SCC: (test1_c, test1_a) 20 ; CHECK: Skipping redundant run on SCC: (test1_c, test1_a)
|
| H A D | cgscc-update.ll | 18 ; call in the inlined body of the function. After that, we form a new SCC and 29 ; This function should have had 'readnone' deduced for its SCC. 38 ; This function should have had 'readnone' deduced for its SCC. 51 ; This too should form a new SCC which can then be reasoned about to compute 61 ; This function should have had 'readnone' deduced for its SCC. 71 ; This function should have had 'readnone' deduced for its SCC. 152 ; form a new SCC and should use that can deduce precise function attrs. 154 ; This function should have had 'readnone' deduced for its SCC. 177 ; This function should have had 'readnone' deduced for its SCC.
|
| H A D | cgscc-invalidate.ll | 66 ; dominators after splitting an SCC into two smaller SCCs. 69 ; can into this routine. That splits test3_g into a separate SCC that is enqued 74 ; Create the first edge in the SCC cycle. 87 ; This function ends up split into a separate SCC, which can cause its analyses 94 ; Create the second edge in the SCC cycle.
|
| /llvm-project-15.0.7/llvm/unittests/ADT/ |
| H A D | DirectedGraphTest.cpp | 246 TEST(DirectedGraphTest, SCC) { in TEST() argument 274 ListOfSCCs.push_back(NodeListTy(SCC.begin(), SCC.end())); in TEST() 278 for (auto &SCC : ListOfSCCs) { in TEST() local 279 if (SCC.size() > 1) in TEST() 281 EXPECT_TRUE(SCC.size() == 1); in TEST() 282 EXPECT_TRUE(SCC.count(&N4) == 1); in TEST() 284 for (auto &SCC : ListOfSCCs) { in TEST() local 285 if (SCC.size() <= 1) in TEST() 287 EXPECT_TRUE(SCC.size() == 3); in TEST() 288 EXPECT_TRUE(SCC.count(&N1) == 1); in TEST() [all …]
|
| /llvm-project-15.0.7/llvm/test/Analysis/LazyCallGraph/ |
| H A D | basic.ll | 259 ; CHECK-NEXT: SCC with 1 functions: 263 ; CHECK-NEXT: SCC with 1 functions: 267 ; CHECK-NEXT: SCC with 1 functions: 271 ; CHECK-NEXT: SCC with 1 functions: 275 ; CHECK-NEXT: SCC with 1 functions: 279 ; CHECK-NEXT: SCC with 1 functions: 283 ; CHECK-NEXT: SCC with 1 functions: 287 ; CHECK-NEXT: SCC with 1 functions: 291 ; CHECK-NEXT: SCC with 1 functions: 295 ; CHECK-NEXT: SCC with 1 functions: [all …]
|
| /llvm-project-15.0.7/llvm/unittests/Analysis/ |
| H A D | CGSCCPassManagerTest.cpp | 64 bool invalidate(LazyCallGraph::SCC &, const PreservedAnalyses &PA, in invalidate() 70 PAC.preservedSet<AllAnalysesOn<LazyCallGraph::SCC>>()); in invalidate() 393 CGPM1.addPass(LambdaSCCPass([&](LazyCallGraph::SCC &C, in TEST_F() 429 CGPM3.addPass(LambdaSCCPass([&](LazyCallGraph::SCC &C, in TEST_F() 884 Result run(LazyCallGraph::SCC &C, CGSCCAnalysisManager &AM, in run() 940 Result run(LazyCallGraph::SCC &C, CGSCCAnalysisManager &AM, in run() 1379 CGPM.addPass(LambdaSCCPassNoPreserve([&](LazyCallGraph::SCC &C, in TEST_F() 1447 CGPM.addPass(LambdaSCCPassNoPreserve([&](LazyCallGraph::SCC &C, in TEST_F() 1517 CGPM.addPass(LambdaSCCPassNoPreserve([&](LazyCallGraph::SCC &C, in TEST_F() 1803 CGPM.addPass(LambdaSCCPassNoPreserve([&](LazyCallGraph::SCC &C, in TEST_F() [all …]
|
| /llvm-project-15.0.7/llvm/test/ThinLTO/X86/ |
| H A D | module_summary_graph_traits.ll | 12 ; CHECK: SCC (2 nodes) { 17 ; CHECK: SCC (1 node) { 21 ; CHECK: SCC (1 node) { 25 ; CHECK: SCC (1 node) { 30 ; CHECK: SCC (1 node) {
|
| /llvm-project-15.0.7/clang-tools-extra/clang-tidy/misc/ |
| H A D | NoRecursionCheck.cpp | 160 CallStackTy pathfindSomeCycle(ArrayRef<CallGraphNode *> SCC) { in pathfindSomeCycle() argument 163 const ImmutableSmallSet<CallGraphNode *, SmallSCCSize> SCCElts(SCC); in pathfindSomeCycle() 175 CallGraphNode::CallRecord EntryNode(SCC.front(), /*CallExpr=*/nullptr); in pathfindSomeCycle() 202 void NoRecursionCheck::handleSCC(ArrayRef<CallGraphNode *> SCC) { in handleSCC() argument 203 assert(!SCC.empty() && "Empty SCC does not make sense."); in handleSCC() 206 for (CallGraphNode *N : SCC) { in handleSCC() 215 const CallStackTy EventuallyCyclicCallStack = pathfindSomeCycle(SCC); in handleSCC()
|
| /llvm-project-15.0.7/polly/lib/Transform/ |
| H A D | ScopInliner.cpp | 51 bool runOnSCC(CallGraphSCC &SCC) override { in runOnSCC() argument 54 if (SCC.size() > 1) in runOnSCC() 56 assert(SCC.size() == 1 && "found empty SCC"); in runOnSCC() 57 Function *F = (*SCC.begin())->getFunction(); in runOnSCC()
|
| /llvm-project-15.0.7/llvm/test/Transforms/Inline/ML/ |
| H A D | scc-dead-accounting.ll | 1 ; MRE for SCC splitting causing MLInlineAdvisor to lose track of edges 3 ; when the foo-bar-inlineme SCC reaches the inliner, foo-bar will be split out 4 ; leaving inlineme in the SCC. inlineme is dead, so it gets removed from the SCC 6 ; as the foo-bar SCC will be passed on to the next SCC pass in the pipeline
|
| /llvm-project-15.0.7/llvm/test/Other/ |
| H A D | no-rerun-function-simplification-pipeline.ll | 8 ; CHECK: PassManager{{.*}}SCC{{.*}} on (f1) 10 ; CHECK: PassManager{{.*}}SCC{{.*}} on (f2, f3) 13 ; CHECK: PassManager{{.*}}SCC{{.*}} on (f2) 16 ; CHECK: PassManager{{.*}}SCC{{.*}} on (f3)
|
| H A D | cgscc-devirt-iteration.ll | 1 ; The CGSCC pass manager includes an SCC iteration utility that tracks indirect 3 ; SCC to expose those calls to the SCC-based IPO passes. We trigger 26 ; call we revisit the SCC passes to reflect the more precise information. This 48 ; is to have one indirect call that can only be resolved when the entire SCC is 86 ; Call the other function here to prevent forwarding until the SCC has had 92 ; after we deduce 'readonly' for the rest of the SCC. Once it is 93 ; devirtualized, we can deduce readnone for the SCC. 105 ; intrinsic we still revisit the SCC pass. This also covers cases where the
|
| /llvm-project-15.0.7/llvm/lib/Transforms/IPO/ |
| H A D | PruneEH.cpp | 47 bool runOnSCC(CallGraphSCC &SCC) override; 163 bool PruneEH::runOnSCC(CallGraphSCC &SCC) { in runOnSCC() argument 164 if (skipSCC(SCC)) in runOnSCC() 167 for (auto &N : SCC) { in runOnSCC() 173 CGU.initialize(CG, SCC); in runOnSCC()
|
| H A D | InlineSimple.cpp | 70 bool runOnSCC(CallGraphSCC &SCC) override; 110 bool SimpleInliner::runOnSCC(CallGraphSCC &SCC) { in runOnSCC() argument 112 return LegacyInlinerBase::runOnSCC(SCC); in runOnSCC()
|
| /llvm-project-15.0.7/llvm/lib/Target/AMDGPU/ |
| H A D | AMDGPUAnnotateKernelFeatures.cpp | 41 bool runOnSCC(CallGraphSCC &SCC) override; 112 bool AMDGPUAnnotateKernelFeatures::runOnSCC(CallGraphSCC &SCC) { in runOnSCC() argument 115 for (CallGraphNode *I : SCC) { in runOnSCC()
|