[llvm] r287698 - [LCG] Start using SCC relationship predicates in the unittest.

Chandler Carruth via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 22 12:35:32 PST 2016


Author: chandlerc
Date: Tue Nov 22 14:35:32 2016
New Revision: 287698

URL: http://llvm.org/viewvc/llvm-project?rev=287698&view=rev
Log:
[LCG] Start using SCC relationship predicates in the unittest.

This mostly gives us nice unittesting of the predicates themselves. I'll
start using them further in subsequent commits to help test the actual
operations performed on the graph.

Modified:
    llvm/trunk/unittests/Analysis/LazyCallGraphTest.cpp

Modified: llvm/trunk/unittests/Analysis/LazyCallGraphTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Analysis/LazyCallGraphTest.cpp?rev=287698&r1=287697&r2=287698&view=diff
==============================================================================
--- llvm/trunk/unittests/Analysis/LazyCallGraphTest.cpp (original)
+++ llvm/trunk/unittests/Analysis/LazyCallGraphTest.cpp Tue Nov 22 14:35:32 2016
@@ -594,13 +594,21 @@ TEST(LazyCallGraphTest, OutgoingEdgeMuta
   LazyCallGraph::RefSCC &CRC = *CG.lookupRefSCC(C);
   LazyCallGraph::RefSCC &DRC = *CG.lookupRefSCC(D);
   EXPECT_TRUE(ARC.isParentOf(BRC));
+  EXPECT_TRUE(AC.isParentOf(BC));
   EXPECT_TRUE(ARC.isParentOf(CRC));
+  EXPECT_TRUE(AC.isParentOf(CC));
   EXPECT_FALSE(ARC.isParentOf(DRC));
+  EXPECT_FALSE(AC.isParentOf(DC));
   EXPECT_TRUE(ARC.isAncestorOf(DRC));
+  EXPECT_TRUE(AC.isAncestorOf(DC));
   EXPECT_FALSE(DRC.isChildOf(ARC));
+  EXPECT_FALSE(DC.isChildOf(AC));
   EXPECT_TRUE(DRC.isDescendantOf(ARC));
+  EXPECT_TRUE(DC.isDescendantOf(AC));
   EXPECT_TRUE(DRC.isChildOf(BRC));
+  EXPECT_TRUE(DC.isChildOf(BC));
   EXPECT_TRUE(DRC.isChildOf(CRC));
+  EXPECT_TRUE(DC.isChildOf(CC));
 
   EXPECT_EQ(2, std::distance(A.begin(), A.end()));
   ARC.insertOutgoingEdge(A, D, LazyCallGraph::Edge::Call);
@@ -613,9 +621,13 @@ TEST(LazyCallGraphTest, OutgoingEdgeMuta
   // Only the parent and child tests sholud have changed. The rest of the graph
   // remains the same.
   EXPECT_TRUE(ARC.isParentOf(DRC));
+  EXPECT_TRUE(AC.isParentOf(DC));
   EXPECT_TRUE(ARC.isAncestorOf(DRC));
+  EXPECT_TRUE(AC.isAncestorOf(DC));
   EXPECT_TRUE(DRC.isChildOf(ARC));
+  EXPECT_TRUE(DC.isChildOf(AC));
   EXPECT_TRUE(DRC.isDescendantOf(ARC));
+  EXPECT_TRUE(DC.isDescendantOf(AC));
   EXPECT_EQ(&AC, CG.lookupSCC(A));
   EXPECT_EQ(&BC, CG.lookupSCC(B));
   EXPECT_EQ(&CC, CG.lookupSCC(C));
@@ -628,11 +640,15 @@ TEST(LazyCallGraphTest, OutgoingEdgeMuta
   ARC.switchOutgoingEdgeToRef(A, D);
   EXPECT_FALSE(NewE.isCall());
 
-  // Verify the graph remains the same.
+  // Verify the reference graph remains the same but the SCC graph is updated.
   EXPECT_TRUE(ARC.isParentOf(DRC));
+  EXPECT_FALSE(AC.isParentOf(DC));
   EXPECT_TRUE(ARC.isAncestorOf(DRC));
+  EXPECT_TRUE(AC.isAncestorOf(DC));
   EXPECT_TRUE(DRC.isChildOf(ARC));
+  EXPECT_FALSE(DC.isChildOf(AC));
   EXPECT_TRUE(DRC.isDescendantOf(ARC));
+  EXPECT_TRUE(DC.isDescendantOf(AC));
   EXPECT_EQ(&AC, CG.lookupSCC(A));
   EXPECT_EQ(&BC, CG.lookupSCC(B));
   EXPECT_EQ(&CC, CG.lookupSCC(C));
@@ -645,11 +661,15 @@ TEST(LazyCallGraphTest, OutgoingEdgeMuta
   ARC.switchOutgoingEdgeToCall(A, D);
   EXPECT_TRUE(NewE.isCall());
 
-  // Verify the graph remains the same.
+  // Verify the reference graph remains the same but the SCC graph is updated.
   EXPECT_TRUE(ARC.isParentOf(DRC));
+  EXPECT_TRUE(AC.isParentOf(DC));
   EXPECT_TRUE(ARC.isAncestorOf(DRC));
+  EXPECT_TRUE(AC.isAncestorOf(DC));
   EXPECT_TRUE(DRC.isChildOf(ARC));
+  EXPECT_TRUE(DC.isChildOf(AC));
   EXPECT_TRUE(DRC.isDescendantOf(ARC));
+  EXPECT_TRUE(DC.isDescendantOf(AC));
   EXPECT_EQ(&AC, CG.lookupSCC(A));
   EXPECT_EQ(&BC, CG.lookupSCC(B));
   EXPECT_EQ(&CC, CG.lookupSCC(C));
@@ -664,9 +684,13 @@ TEST(LazyCallGraphTest, OutgoingEdgeMuta
 
   // Now the parent and child tests fail again but the rest remains the same.
   EXPECT_FALSE(ARC.isParentOf(DRC));
+  EXPECT_FALSE(AC.isParentOf(DC));
   EXPECT_TRUE(ARC.isAncestorOf(DRC));
+  EXPECT_TRUE(AC.isAncestorOf(DC));
   EXPECT_FALSE(DRC.isChildOf(ARC));
+  EXPECT_FALSE(DC.isChildOf(AC));
   EXPECT_TRUE(DRC.isDescendantOf(ARC));
+  EXPECT_TRUE(DC.isDescendantOf(AC));
   EXPECT_EQ(&AC, CG.lookupSCC(A));
   EXPECT_EQ(&BC, CG.lookupSCC(B));
   EXPECT_EQ(&CC, CG.lookupSCC(C));




More information about the llvm-commits mailing list