Lines Matching refs:SCC

159 void LazyCallGraph::SCC::insert(Node &N) {  in insert()
165 bool LazyCallGraph::SCC::isDescendantOf(const SCC &C) const { in isDescendantOf()
167 SmallVector<const SCC *, 4> AncestorWorklist; in isDescendantOf()
170 const SCC *AncestorC = AncestorWorklist.pop_back_val(); in isDescendantOf()
173 for (const SCC *ParentC : AncestorC->ParentSCCs) in isDescendantOf()
180 void LazyCallGraph::SCC::insertIntraSCCEdge(Node &CallerN, Node &CalleeN) { in insertIntraSCCEdge()
190 void LazyCallGraph::SCC::insertOutgoingEdge(Node &CallerN, Node &CalleeN) { in insertOutgoingEdge()
196 SCC &CalleeC = *G->SCCMap.lookup(&CalleeN); in insertOutgoingEdge()
205 SmallVector<LazyCallGraph::SCC *, 1>
206 LazyCallGraph::SCC::insertIncomingEdge(Node &CallerN, Node &CalleeN) { in insertIncomingEdge()
212 SCC &CallerC = *G->SCCMap.lookup(&CallerN); in insertIncomingEdge()
231 SmallPtrSet<SCC *, 8> ConnectedSCCs; in insertIncomingEdge()
236 SmallVector<std::pair<SCC *, SCC::parent_iterator>, 8> DFSSCCs; in insertIncomingEdge()
237 SmallPtrSet<SCC *, 8> VisitedSCCs; in insertIncomingEdge()
239 SCC *C = this; in insertIncomingEdge()
243 SCC &ParentSCC = *I++; in insertIncomingEdge()
291 for (SCC *C : ConnectedSCCs) { in insertIncomingEdge()
294 for (SCC *ParentC : C->ParentSCCs) in insertIncomingEdge()
301 SCC &ChildC = *G->SCCMap.lookup(&ChildN); in insertIncomingEdge()
312 SCC &ChildC = *G->SCCMap.lookup(&ChildN); in insertIncomingEdge()
321 return SmallVector<SCC *, 1>(ConnectedSCCs.begin(), ConnectedSCCs.end()); in insertIncomingEdge()
324 void LazyCallGraph::SCC::removeInterSCCEdge(Node &CallerN, Node &CalleeN) { in removeInterSCCEdge()
331 SCC &CalleeC = *G->SCCMap.lookup(&CalleeN); in removeInterSCCEdge()
343 SCC &OtherCalleeC = *G->SCCMap.lookup(&OtherCalleeN); in removeInterSCCEdge()
377 void LazyCallGraph::SCC::internalDFS( in internalDFS()
380 SmallVectorImpl<SCC *> &ResultSCCs) { in internalDFS()
392 if (SCC *ChildSCC = G->SCCMap.lookup(&ChildN)) { in internalDFS()
456 SmallVector<LazyCallGraph::SCC *, 1>
457 LazyCallGraph::SCC::removeIntraSCCEdge(Node &CallerN, in removeIntraSCCEdge()
463 SmallVector<SCC *, 1> ResultSCCs; in removeIntraSCCEdge()
505 SCC &ChildSCC = *G->SCCMap.lookup(&ChildN); in removeIntraSCCEdge()
517 [&](SCC *C) { return C == this; })) in removeIntraSCCEdge()
569 SmallVector<SCC *, 16> Worklist(LeafSCCs.begin(), LeafSCCs.end()); in updateGraphPtrs()
572 SCC *C = Worklist.pop_back_val(); in updateGraphPtrs()
580 LazyCallGraph::SCC *LazyCallGraph::formSCC(Node *RootN, in formSCC()
584 SCC *NewSCC = new (SCCBPA.Allocate()) SCC(*this); in formSCC()
600 SCC &ChildSCC = *SCCMap.lookup(&SCCChildN); in formSCC()
614 LazyCallGraph::SCC *LazyCallGraph::getNextSCCInPostOrder() { in getNextSCCInPostOrder()
701 static void printSCC(raw_ostream &OS, LazyCallGraph::SCC &SCC) { in printSCC() argument
702 ptrdiff_t SCCSize = std::distance(SCC.begin(), SCC.end()); in printSCC()
705 for (LazyCallGraph::Node *N : SCC) in printSCC()
723 for (LazyCallGraph::SCC &SCC : G.postorder_sccs()) in run()
724 printSCC(OS, SCC); in run()