Lines Matching refs:SCC
247 // Test SCC computation against every graph with NUM_NODES nodes or less.
248 // Since SCC considers every node to have an implicit self-edge, we only
274 // Test the SCC logic on this graph.
276 /// NodesInSomeSCC - Those nodes which are in some SCC.
280 std::vector<GT::NodeType*> &SCC = *I;
282 // Get the nodes in this SCC as a NodeSubset rather than a vector.
284 for (unsigned i = 0, e = SCC.size(); i != e; ++i)
285 NodesInThisSCC.AddNode(SCC[i]->first);
287 // There should be at least one node in every SCC.
290 // Check that every node in the SCC is reachable from every other node in
291 // the SCC.
296 // OK, now that we now that every node in the SCC is reachable from every
298 // SCC is the same as the set of nodes reachable from every node in the
299 // SCC. Check that for every node N not in the SCC but reachable from the
300 // SCC, no element of the SCC is reachable from N.
311 // The result must be the same for all other nodes in this SCC, so
316 // This is indeed a SCC: a maximal set of nodes for which each node is
319 // Check that we didn't already see this SCC.
324 // Check a property that is specific to the LLVM SCC iterator and
325 // guaranteed by it: if a node in SCC S1 has an edge to a node in
326 // SCC S2, then S1 is visited *after* S2. This means that the set
327 // of nodes reachable from this SCC must be contained either in the
328 // union of this SCC and all previously visited SCC's.
334 // The result must be the same for all other nodes in this SCC, so
340 // Finally, check that the nodes in some SCC are exactly those that are