mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-02 22:32:08 +00:00
Check an additional property specific to the way LLVM
iterates over SCC's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136353 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8537e8a9a5
commit
6f7eec1294
@ -322,6 +322,21 @@ TEST(SCCIteratorTest, AllSmallGraphs) {
|
||||
EXPECT_TRUE(NodesInSomeSCC.Meet(NodesInThisSCC).isEmpty());
|
||||
|
||||
NodesInSomeSCC = NodesInSomeSCC.Join(NodesInThisSCC);
|
||||
|
||||
// Check a property that is specific to the LLVM SCC iterator and
|
||||
// guaranteed by it: if a node in SCC S1 has an edge to a node in
|
||||
// SCC S2, then S1 is visited *after* S2. This means that the set
|
||||
// of nodes reachable from this SCC must be contained either in the
|
||||
// union of this SCC and all previously visited SCC's.
|
||||
|
||||
for (unsigned i = 0; i != NUM_NODES; ++i)
|
||||
if (NodesInThisSCC.count(i)) {
|
||||
GT::NodeSubset NodesReachableFromSCC = G.NodesReachableFrom(i);
|
||||
EXPECT_TRUE(NodesReachableFromSCC.isSubsetOf(NodesInSomeSCC));
|
||||
// The result must be the same for all other nodes in this SCC, so
|
||||
// there is no point in checking them.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Finally, check that the nodes in some SCC are exactly those that are
|
||||
|
Loading…
x
Reference in New Issue
Block a user