Lines Matching refs:CG
225 LazyCallGraph CG(M, GetTLI); in buildCG() local
226 return CG; in buildCG()
232 LazyCallGraph CG = buildCG(*M); in TEST() local
237 auto I = CG.begin(); in TEST()
262 EXPECT_EQ(CG.end(), I); in TEST()
322 CG.buildRefSCCs(); in TEST()
323 auto J = CG.postorder_ref_scc_begin(); in TEST()
339 EXPECT_EQ(&D, &*CG.postorder_ref_scc_begin()); in TEST()
355 EXPECT_EQ(&B, &*std::next(CG.postorder_ref_scc_begin())); in TEST()
373 EXPECT_EQ(&C, &*std::next(CG.postorder_ref_scc_begin(), 2)); in TEST()
391 EXPECT_EQ(&A, &*std::next(CG.postorder_ref_scc_begin(), 3)); in TEST()
393 EXPECT_EQ(CG.postorder_ref_scc_end(), J); in TEST()
394 EXPECT_EQ(J, std::next(CG.postorder_ref_scc_begin(), 4)); in TEST()
420 LazyCallGraph CG = buildCG(*M); in TEST() local
422 LazyCallGraph::Node &A = CG.get(lookupFunction(*M, "a")); in TEST()
423 LazyCallGraph::Node &B = CG.get(lookupFunction(*M, "b")); in TEST()
429 LazyCallGraph::Node &C = CG.get(lookupFunction(*M, "c")); in TEST()
431 CG.insertEdge(B, C, LazyCallGraph::Edge::Call); in TEST()
435 CG.insertEdge(C, B, LazyCallGraph::Edge::Call); in TEST()
439 CG.insertEdge(C, C, LazyCallGraph::Edge::Call); in TEST()
444 CG.removeEdge(C, B); in TEST()
448 CG.removeEdge(C, C); in TEST()
451 CG.removeEdge(B, C); in TEST()
458 LazyCallGraph CG = buildCG(*M); in TEST() local
462 LazyCallGraph::Node &D1 = CG.get(lookupFunction(*M, "d1")); in TEST()
463 LazyCallGraph::Node &A1 = CG.get(lookupFunction(*M, "a1")); in TEST()
466 CG.insertEdge(D1, A1, LazyCallGraph::Edge::Ref); in TEST()
473 CG.buildRefSCCs(); in TEST()
474 auto I = CG.postorder_ref_scc_begin(); in TEST()
476 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
555 LazyCallGraph CG = buildCG(*M); in TEST() local
558 CG.buildRefSCCs(); in TEST()
559 auto I = CG.postorder_ref_scc_begin(); in TEST()
561 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
563 LazyCallGraph::Node &N1 = *CG.lookup(lookupFunction(*M, "f1")); in TEST()
564 LazyCallGraph::Node &N2 = *CG.lookup(lookupFunction(*M, "f2")); in TEST()
565 LazyCallGraph::Node &N3 = *CG.lookup(lookupFunction(*M, "f3")); in TEST()
566 LazyCallGraph::Node &N4 = *CG.lookup(lookupFunction(*M, "f4")); in TEST()
567 LazyCallGraph::Node &N5 = *CG.lookup(lookupFunction(*M, "f4")); in TEST()
568 EXPECT_EQ(&RC, CG.lookupRefSCC(N1)); in TEST()
569 EXPECT_EQ(&RC, CG.lookupRefSCC(N2)); in TEST()
570 EXPECT_EQ(&RC, CG.lookupRefSCC(N3)); in TEST()
571 EXPECT_EQ(&RC, CG.lookupRefSCC(N4)); in TEST()
572 EXPECT_EQ(&RC, CG.lookupRefSCC(N5)); in TEST()
577 EXPECT_EQ(&C, CG.lookupSCC(N1)); in TEST()
578 EXPECT_EQ(&C, CG.lookupSCC(N2)); in TEST()
579 EXPECT_EQ(&C, CG.lookupSCC(N3)); in TEST()
580 EXPECT_EQ(&C, CG.lookupSCC(N4)); in TEST()
581 EXPECT_EQ(&C, CG.lookupSCC(N5)); in TEST()
606 LazyCallGraph CG = buildCG(*M); in TEST() local
609 CG.buildRefSCCs(); in TEST()
610 for (LazyCallGraph::RefSCC &RC : CG.postorder_ref_sccs()) in TEST()
613 LazyCallGraph::Node &A = *CG.lookup(lookupFunction(*M, "a")); in TEST()
614 LazyCallGraph::Node &B = *CG.lookup(lookupFunction(*M, "b")); in TEST()
615 LazyCallGraph::Node &C = *CG.lookup(lookupFunction(*M, "c")); in TEST()
616 LazyCallGraph::Node &D = *CG.lookup(lookupFunction(*M, "d")); in TEST()
617 LazyCallGraph::SCC &AC = *CG.lookupSCC(A); in TEST()
618 LazyCallGraph::SCC &BC = *CG.lookupSCC(B); in TEST()
619 LazyCallGraph::SCC &CC = *CG.lookupSCC(C); in TEST()
620 LazyCallGraph::SCC &DC = *CG.lookupSCC(D); in TEST()
621 LazyCallGraph::RefSCC &ARC = *CG.lookupRefSCC(A); in TEST()
622 LazyCallGraph::RefSCC &BRC = *CG.lookupRefSCC(B); in TEST()
623 LazyCallGraph::RefSCC &CRC = *CG.lookupRefSCC(C); in TEST()
624 LazyCallGraph::RefSCC &DRC = *CG.lookupRefSCC(D); in TEST()
660 EXPECT_EQ(&AC, CG.lookupSCC(A)); in TEST()
661 EXPECT_EQ(&BC, CG.lookupSCC(B)); in TEST()
662 EXPECT_EQ(&CC, CG.lookupSCC(C)); in TEST()
663 EXPECT_EQ(&DC, CG.lookupSCC(D)); in TEST()
664 EXPECT_EQ(&ARC, CG.lookupRefSCC(A)); in TEST()
665 EXPECT_EQ(&BRC, CG.lookupRefSCC(B)); in TEST()
666 EXPECT_EQ(&CRC, CG.lookupRefSCC(C)); in TEST()
667 EXPECT_EQ(&DRC, CG.lookupRefSCC(D)); in TEST()
681 EXPECT_EQ(&AC, CG.lookupSCC(A)); in TEST()
682 EXPECT_EQ(&BC, CG.lookupSCC(B)); in TEST()
683 EXPECT_EQ(&CC, CG.lookupSCC(C)); in TEST()
684 EXPECT_EQ(&DC, CG.lookupSCC(D)); in TEST()
685 EXPECT_EQ(&ARC, CG.lookupRefSCC(A)); in TEST()
686 EXPECT_EQ(&BRC, CG.lookupRefSCC(B)); in TEST()
687 EXPECT_EQ(&CRC, CG.lookupRefSCC(C)); in TEST()
688 EXPECT_EQ(&DRC, CG.lookupRefSCC(D)); in TEST()
702 EXPECT_EQ(&AC, CG.lookupSCC(A)); in TEST()
703 EXPECT_EQ(&BC, CG.lookupSCC(B)); in TEST()
704 EXPECT_EQ(&CC, CG.lookupSCC(C)); in TEST()
705 EXPECT_EQ(&DC, CG.lookupSCC(D)); in TEST()
706 EXPECT_EQ(&ARC, CG.lookupRefSCC(A)); in TEST()
707 EXPECT_EQ(&BRC, CG.lookupRefSCC(B)); in TEST()
708 EXPECT_EQ(&CRC, CG.lookupRefSCC(C)); in TEST()
709 EXPECT_EQ(&DRC, CG.lookupRefSCC(D)); in TEST()
723 EXPECT_EQ(&AC, CG.lookupSCC(A)); in TEST()
724 EXPECT_EQ(&BC, CG.lookupSCC(B)); in TEST()
725 EXPECT_EQ(&CC, CG.lookupSCC(C)); in TEST()
726 EXPECT_EQ(&DC, CG.lookupSCC(D)); in TEST()
727 EXPECT_EQ(&ARC, CG.lookupRefSCC(A)); in TEST()
728 EXPECT_EQ(&BRC, CG.lookupRefSCC(B)); in TEST()
729 EXPECT_EQ(&CRC, CG.lookupRefSCC(C)); in TEST()
730 EXPECT_EQ(&DRC, CG.lookupRefSCC(D)); in TEST()
752 LazyCallGraph CG = buildCG(*M); in TEST() local
755 CG.buildRefSCCs(); in TEST()
756 for (LazyCallGraph::RefSCC &RC : CG.postorder_ref_sccs()) in TEST()
759 LazyCallGraph::Node &A1 = *CG.lookup(lookupFunction(*M, "a1")); in TEST()
760 LazyCallGraph::Node &A2 = *CG.lookup(lookupFunction(*M, "a2")); in TEST()
761 LazyCallGraph::Node &A3 = *CG.lookup(lookupFunction(*M, "a3")); in TEST()
762 LazyCallGraph::Node &B1 = *CG.lookup(lookupFunction(*M, "b1")); in TEST()
763 LazyCallGraph::Node &B2 = *CG.lookup(lookupFunction(*M, "b2")); in TEST()
764 LazyCallGraph::Node &B3 = *CG.lookup(lookupFunction(*M, "b3")); in TEST()
765 LazyCallGraph::Node &C1 = *CG.lookup(lookupFunction(*M, "c1")); in TEST()
766 LazyCallGraph::Node &C2 = *CG.lookup(lookupFunction(*M, "c2")); in TEST()
767 LazyCallGraph::Node &C3 = *CG.lookup(lookupFunction(*M, "c3")); in TEST()
768 LazyCallGraph::Node &D1 = *CG.lookup(lookupFunction(*M, "d1")); in TEST()
769 LazyCallGraph::Node &D2 = *CG.lookup(lookupFunction(*M, "d2")); in TEST()
770 LazyCallGraph::Node &D3 = *CG.lookup(lookupFunction(*M, "d3")); in TEST()
771 LazyCallGraph::RefSCC &ARC = *CG.lookupRefSCC(A1); in TEST()
772 LazyCallGraph::RefSCC &BRC = *CG.lookupRefSCC(B1); in TEST()
773 LazyCallGraph::RefSCC &CRC = *CG.lookupRefSCC(C1); in TEST()
774 LazyCallGraph::RefSCC &DRC = *CG.lookupRefSCC(D1); in TEST()
775 ASSERT_EQ(&ARC, CG.lookupRefSCC(A2)); in TEST()
776 ASSERT_EQ(&ARC, CG.lookupRefSCC(A3)); in TEST()
777 ASSERT_EQ(&BRC, CG.lookupRefSCC(B2)); in TEST()
778 ASSERT_EQ(&BRC, CG.lookupRefSCC(B3)); in TEST()
779 ASSERT_EQ(&CRC, CG.lookupRefSCC(C2)); in TEST()
780 ASSERT_EQ(&CRC, CG.lookupRefSCC(C3)); in TEST()
781 ASSERT_EQ(&DRC, CG.lookupRefSCC(D2)); in TEST()
782 ASSERT_EQ(&DRC, CG.lookupRefSCC(D3)); in TEST()
810 EXPECT_EQ(&ARC, CG.lookupRefSCC(A1)); in TEST()
811 EXPECT_EQ(&ARC, CG.lookupRefSCC(A2)); in TEST()
812 EXPECT_EQ(&ARC, CG.lookupRefSCC(A3)); in TEST()
813 EXPECT_EQ(&BRC, CG.lookupRefSCC(B1)); in TEST()
814 EXPECT_EQ(&BRC, CG.lookupRefSCC(B2)); in TEST()
815 EXPECT_EQ(&BRC, CG.lookupRefSCC(B3)); in TEST()
816 EXPECT_EQ(&CRC, CG.lookupRefSCC(C1)); in TEST()
817 EXPECT_EQ(&CRC, CG.lookupRefSCC(C2)); in TEST()
818 EXPECT_EQ(&CRC, CG.lookupRefSCC(C3)); in TEST()
819 EXPECT_EQ(&CRC, CG.lookupRefSCC(D1)); in TEST()
820 EXPECT_EQ(&CRC, CG.lookupRefSCC(D2)); in TEST()
821 EXPECT_EQ(&CRC, CG.lookupRefSCC(D3)); in TEST()
828 auto I = CG.postorder_ref_scc_begin(), E = CG.postorder_ref_scc_end(); in TEST()
844 LazyCallGraph CG = buildCG(*M); in TEST() local
847 CG.buildRefSCCs(); in TEST()
848 for (LazyCallGraph::RefSCC &RC : CG.postorder_ref_sccs()) in TEST()
851 LazyCallGraph::Node &A1 = *CG.lookup(lookupFunction(*M, "a1")); in TEST()
852 LazyCallGraph::Node &A2 = *CG.lookup(lookupFunction(*M, "a2")); in TEST()
853 LazyCallGraph::Node &A3 = *CG.lookup(lookupFunction(*M, "a3")); in TEST()
854 LazyCallGraph::Node &B1 = *CG.lookup(lookupFunction(*M, "b1")); in TEST()
855 LazyCallGraph::Node &B2 = *CG.lookup(lookupFunction(*M, "b2")); in TEST()
856 LazyCallGraph::Node &B3 = *CG.lookup(lookupFunction(*M, "b3")); in TEST()
857 LazyCallGraph::Node &C1 = *CG.lookup(lookupFunction(*M, "c1")); in TEST()
858 LazyCallGraph::Node &C2 = *CG.lookup(lookupFunction(*M, "c2")); in TEST()
859 LazyCallGraph::Node &C3 = *CG.lookup(lookupFunction(*M, "c3")); in TEST()
860 LazyCallGraph::Node &D1 = *CG.lookup(lookupFunction(*M, "d1")); in TEST()
861 LazyCallGraph::Node &D2 = *CG.lookup(lookupFunction(*M, "d2")); in TEST()
862 LazyCallGraph::Node &D3 = *CG.lookup(lookupFunction(*M, "d3")); in TEST()
863 LazyCallGraph::RefSCC &ARC = *CG.lookupRefSCC(A1); in TEST()
864 LazyCallGraph::RefSCC &BRC = *CG.lookupRefSCC(B1); in TEST()
865 LazyCallGraph::RefSCC &CRC = *CG.lookupRefSCC(C1); in TEST()
866 LazyCallGraph::RefSCC &DRC = *CG.lookupRefSCC(D1); in TEST()
867 ASSERT_EQ(&ARC, CG.lookupRefSCC(A2)); in TEST()
868 ASSERT_EQ(&ARC, CG.lookupRefSCC(A3)); in TEST()
869 ASSERT_EQ(&BRC, CG.lookupRefSCC(B2)); in TEST()
870 ASSERT_EQ(&BRC, CG.lookupRefSCC(B3)); in TEST()
871 ASSERT_EQ(&CRC, CG.lookupRefSCC(C2)); in TEST()
872 ASSERT_EQ(&CRC, CG.lookupRefSCC(C3)); in TEST()
873 ASSERT_EQ(&DRC, CG.lookupRefSCC(D2)); in TEST()
874 ASSERT_EQ(&DRC, CG.lookupRefSCC(D3)); in TEST()
902 EXPECT_EQ(&ARC, CG.lookupRefSCC(A1)); in TEST()
903 EXPECT_EQ(&ARC, CG.lookupRefSCC(A2)); in TEST()
904 EXPECT_EQ(&ARC, CG.lookupRefSCC(A3)); in TEST()
905 EXPECT_EQ(&BRC, CG.lookupRefSCC(B1)); in TEST()
906 EXPECT_EQ(&BRC, CG.lookupRefSCC(B2)); in TEST()
907 EXPECT_EQ(&BRC, CG.lookupRefSCC(B3)); in TEST()
908 EXPECT_EQ(&CRC, CG.lookupRefSCC(C1)); in TEST()
909 EXPECT_EQ(&CRC, CG.lookupRefSCC(C2)); in TEST()
910 EXPECT_EQ(&CRC, CG.lookupRefSCC(C3)); in TEST()
911 EXPECT_EQ(&CRC, CG.lookupRefSCC(D1)); in TEST()
912 EXPECT_EQ(&CRC, CG.lookupRefSCC(D2)); in TEST()
913 EXPECT_EQ(&CRC, CG.lookupRefSCC(D3)); in TEST()
920 auto I = CG.postorder_ref_scc_begin(), E = CG.postorder_ref_scc_end(); in TEST()
951 LazyCallGraph CG = buildCG(*M); in TEST() local
954 CG.buildRefSCCs(); in TEST()
955 for (LazyCallGraph::RefSCC &RC : CG.postorder_ref_sccs()) in TEST()
958 LazyCallGraph::Node &A = *CG.lookup(lookupFunction(*M, "a")); in TEST()
959 LazyCallGraph::Node &B = *CG.lookup(lookupFunction(*M, "b")); in TEST()
960 LazyCallGraph::Node &C = *CG.lookup(lookupFunction(*M, "c")); in TEST()
961 LazyCallGraph::Node &D = *CG.lookup(lookupFunction(*M, "d")); in TEST()
962 LazyCallGraph::SCC &AC = *CG.lookupSCC(A); in TEST()
963 LazyCallGraph::SCC &BC = *CG.lookupSCC(B); in TEST()
964 LazyCallGraph::SCC &CC = *CG.lookupSCC(C); in TEST()
965 LazyCallGraph::SCC &DC = *CG.lookupSCC(D); in TEST()
966 LazyCallGraph::RefSCC &ARC = *CG.lookupRefSCC(A); in TEST()
967 LazyCallGraph::RefSCC &BRC = *CG.lookupRefSCC(B); in TEST()
968 LazyCallGraph::RefSCC &CRC = *CG.lookupRefSCC(C); in TEST()
969 LazyCallGraph::RefSCC &DRC = *CG.lookupRefSCC(D); in TEST()
984 EXPECT_EQ(&ARC, CG.lookupRefSCC(A)); in TEST()
985 EXPECT_EQ(&ARC, CG.lookupRefSCC(B)); in TEST()
986 EXPECT_EQ(&ARC, CG.lookupRefSCC(C)); in TEST()
987 EXPECT_EQ(&ARC, CG.lookupRefSCC(D)); in TEST()
997 auto I = CG.postorder_ref_scc_begin(), E = CG.postorder_ref_scc_end(); in TEST()
1028 LazyCallGraph CG = buildCG(*M); in TEST() local
1031 CG.buildRefSCCs(); in TEST()
1032 for (LazyCallGraph::RefSCC &RC : CG.postorder_ref_sccs()) in TEST()
1035 LazyCallGraph::Node &A = *CG.lookup(lookupFunction(*M, "a")); in TEST()
1036 LazyCallGraph::Node &B = *CG.lookup(lookupFunction(*M, "b")); in TEST()
1037 LazyCallGraph::Node &C = *CG.lookup(lookupFunction(*M, "c")); in TEST()
1038 LazyCallGraph::Node &D = *CG.lookup(lookupFunction(*M, "d")); in TEST()
1039 LazyCallGraph::RefSCC &ARC = *CG.lookupRefSCC(A); in TEST()
1040 LazyCallGraph::RefSCC &BRC = *CG.lookupRefSCC(B); in TEST()
1041 LazyCallGraph::RefSCC &CRC = *CG.lookupRefSCC(C); in TEST()
1042 LazyCallGraph::RefSCC &DRC = *CG.lookupRefSCC(D); in TEST()
1058 EXPECT_EQ(&ARC, CG.lookupRefSCC(A)); in TEST()
1059 EXPECT_EQ(&ARC, CG.lookupRefSCC(B)); in TEST()
1060 EXPECT_EQ(&ARC, CG.lookupRefSCC(C)); in TEST()
1061 EXPECT_EQ(&ARC, CG.lookupRefSCC(D)); in TEST()
1064 auto I = CG.postorder_ref_scc_begin(), End = CG.postorder_ref_scc_end(); in TEST()
1090 LazyCallGraph CG = buildCG(*M); in TEST() local
1093 CG.buildRefSCCs(); in TEST()
1094 for (LazyCallGraph::RefSCC &RC : CG.postorder_ref_sccs()) in TEST()
1097 LazyCallGraph::Node &A1 = *CG.lookup(lookupFunction(*M, "a1")); in TEST()
1098 LazyCallGraph::Node &A2 = *CG.lookup(lookupFunction(*M, "a2")); in TEST()
1099 LazyCallGraph::Node &A3 = *CG.lookup(lookupFunction(*M, "a3")); in TEST()
1100 LazyCallGraph::Node &B1 = *CG.lookup(lookupFunction(*M, "b1")); in TEST()
1101 LazyCallGraph::Node &B2 = *CG.lookup(lookupFunction(*M, "b2")); in TEST()
1102 LazyCallGraph::Node &B3 = *CG.lookup(lookupFunction(*M, "b3")); in TEST()
1103 LazyCallGraph::Node &C1 = *CG.lookup(lookupFunction(*M, "c1")); in TEST()
1104 LazyCallGraph::Node &C2 = *CG.lookup(lookupFunction(*M, "c2")); in TEST()
1105 LazyCallGraph::Node &C3 = *CG.lookup(lookupFunction(*M, "c3")); in TEST()
1106 LazyCallGraph::Node &D1 = *CG.lookup(lookupFunction(*M, "d1")); in TEST()
1107 LazyCallGraph::Node &D2 = *CG.lookup(lookupFunction(*M, "d2")); in TEST()
1108 LazyCallGraph::Node &D3 = *CG.lookup(lookupFunction(*M, "d3")); in TEST()
1109 LazyCallGraph::RefSCC &ARC = *CG.lookupRefSCC(A1); in TEST()
1110 LazyCallGraph::RefSCC &BRC = *CG.lookupRefSCC(B1); in TEST()
1111 LazyCallGraph::RefSCC &CRC = *CG.lookupRefSCC(C1); in TEST()
1112 LazyCallGraph::RefSCC &DRC = *CG.lookupRefSCC(D1); in TEST()
1113 ASSERT_EQ(&ARC, CG.lookupRefSCC(A2)); in TEST()
1114 ASSERT_EQ(&ARC, CG.lookupRefSCC(A3)); in TEST()
1115 ASSERT_EQ(&BRC, CG.lookupRefSCC(B2)); in TEST()
1116 ASSERT_EQ(&BRC, CG.lookupRefSCC(B3)); in TEST()
1117 ASSERT_EQ(&CRC, CG.lookupRefSCC(C2)); in TEST()
1118 ASSERT_EQ(&CRC, CG.lookupRefSCC(C3)); in TEST()
1119 ASSERT_EQ(&DRC, CG.lookupRefSCC(D2)); in TEST()
1120 ASSERT_EQ(&DRC, CG.lookupRefSCC(D3)); in TEST()
1165 LazyCallGraph::SCC &DC = *CG.lookupSCC(D2); in TEST()
1167 EXPECT_EQ(&DC, CG.lookupSCC(D2)); in TEST()
1170 EXPECT_EQ(&NewDC, CG.lookupSCC(D1)); in TEST()
1171 EXPECT_EQ(&NewDC, CG.lookupSCC(D3)); in TEST()
1175 EXPECT_EQ(&NewDRC, CG.lookupRefSCC(D1)); in TEST()
1176 EXPECT_EQ(&NewDRC, CG.lookupRefSCC(D3)); in TEST()
1178 EXPECT_EQ(&D2RC, CG.lookupRefSCC(D2)); in TEST()
1189 CG.removeDeadFunction(D2F); in TEST()
1192 EXPECT_EQ(&ARC, CG.lookupRefSCC(A1)); in TEST()
1193 EXPECT_EQ(&ARC, CG.lookupRefSCC(A2)); in TEST()
1194 EXPECT_EQ(&ARC, CG.lookupRefSCC(A3)); in TEST()
1195 EXPECT_EQ(&BRC, CG.lookupRefSCC(B1)); in TEST()
1196 EXPECT_EQ(&BRC, CG.lookupRefSCC(B2)); in TEST()
1197 EXPECT_EQ(&BRC, CG.lookupRefSCC(B3)); in TEST()
1198 EXPECT_EQ(&CRC, CG.lookupRefSCC(C1)); in TEST()
1199 EXPECT_EQ(&CRC, CG.lookupRefSCC(C2)); in TEST()
1200 EXPECT_EQ(&CRC, CG.lookupRefSCC(C3)); in TEST()
1201 EXPECT_EQ(&NewDRC, CG.lookupRefSCC(D1)); in TEST()
1202 EXPECT_EQ(&NewDRC, CG.lookupRefSCC(D3)); in TEST()
1206 auto I = CG.postorder_ref_scc_begin(), E = CG.postorder_ref_scc_end(); in TEST()
1235 LazyCallGraph CG = buildCG(*M); in TEST() local
1238 CG.buildRefSCCs(); in TEST()
1239 auto I = CG.postorder_ref_scc_begin(); in TEST()
1241 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
1243 LazyCallGraph::Node &A = *CG.lookup(lookupFunction(*M, "a")); in TEST()
1244 LazyCallGraph::Node &B = *CG.lookup(lookupFunction(*M, "b")); in TEST()
1245 LazyCallGraph::Node &C = *CG.lookup(lookupFunction(*M, "c")); in TEST()
1246 EXPECT_EQ(&RC, CG.lookupRefSCC(A)); in TEST()
1247 EXPECT_EQ(&RC, CG.lookupRefSCC(B)); in TEST()
1248 EXPECT_EQ(&RC, CG.lookupRefSCC(C)); in TEST()
1250 EXPECT_EQ(&*RC.begin(), CG.lookupSCC(A)); in TEST()
1251 EXPECT_EQ(&*RC.begin(), CG.lookupSCC(B)); in TEST()
1252 EXPECT_EQ(&*RC.begin(), CG.lookupSCC(C)); in TEST()
1257 EXPECT_EQ(&RC, CG.lookupRefSCC(A)); in TEST()
1258 EXPECT_EQ(&RC, CG.lookupRefSCC(B)); in TEST()
1259 EXPECT_EQ(&RC, CG.lookupRefSCC(C)); in TEST()
1261 EXPECT_EQ(&*RC.begin(), CG.lookupSCC(A)); in TEST()
1262 EXPECT_EQ(&*RC.begin(), CG.lookupSCC(B)); in TEST()
1263 EXPECT_EQ(&*RC.begin(), CG.lookupSCC(C)); in TEST()
1269 EXPECT_EQ(&RC, CG.lookupRefSCC(A)); in TEST()
1270 EXPECT_EQ(&RC, CG.lookupRefSCC(B)); in TEST()
1271 EXPECT_EQ(&RC, CG.lookupRefSCC(C)); in TEST()
1276 EXPECT_EQ(&*J++, CG.lookupSCC(B)); in TEST()
1277 EXPECT_EQ(&*J++, CG.lookupSCC(A)); in TEST()
1278 EXPECT_EQ(&*J++, CG.lookupSCC(C)); in TEST()
1289 LazyCallGraph::SCC &AC = *CG.lookupSCC(A); in TEST()
1290 LazyCallGraph::SCC &CC = *CG.lookupSCC(C); in TEST()
1296 EXPECT_EQ(&CC, CG.lookupSCC(A)); in TEST()
1297 EXPECT_EQ(&CC, CG.lookupSCC(C)); in TEST()
1299 EXPECT_EQ(&*J++, CG.lookupSCC(B)); in TEST()
1300 EXPECT_EQ(&*J++, CG.lookupSCC(C)); in TEST()
1329 LazyCallGraph CG = buildCG(*M); in TEST() local
1332 CG.buildRefSCCs(); in TEST()
1333 auto I = CG.postorder_ref_scc_begin(), E = CG.postorder_ref_scc_end(); in TEST()
1337 LazyCallGraph::Node &A = *CG.lookup(lookupFunction(*M, "a")); in TEST()
1338 LazyCallGraph::Node &B = *CG.lookup(lookupFunction(*M, "b")); in TEST()
1339 LazyCallGraph::Node &C = *CG.lookup(lookupFunction(*M, "c")); in TEST()
1340 EXPECT_EQ(&RC, CG.lookupRefSCC(A)); in TEST()
1341 EXPECT_EQ(&RC, CG.lookupRefSCC(B)); in TEST()
1342 EXPECT_EQ(&RC, CG.lookupRefSCC(C)); in TEST()
1349 EXPECT_EQ(&RC, CG.lookupRefSCC(A)); in TEST()
1350 EXPECT_EQ(&RC, CG.lookupRefSCC(B)); in TEST()
1351 EXPECT_EQ(&RC, CG.lookupRefSCC(C)); in TEST()
1352 auto J = CG.postorder_ref_scc_begin(); in TEST()
1367 EXPECT_EQ(&ARC, CG.lookupRefSCC(A)); in TEST()
1369 EXPECT_EQ(&BCRC, CG.lookupRefSCC(B)); in TEST()
1370 EXPECT_EQ(&BCRC, CG.lookupRefSCC(C)); in TEST()
1371 J = CG.postorder_ref_scc_begin(); in TEST()
1407 LazyCallGraph CG = buildCG(*M); in TEST() local
1410 CG.buildRefSCCs(); in TEST()
1411 auto I = CG.postorder_ref_scc_begin(), E = CG.postorder_ref_scc_end(); in TEST()
1415 LazyCallGraph::Node &A = *CG.lookup(lookupFunction(*M, "a")); in TEST()
1416 LazyCallGraph::Node &B = *CG.lookup(lookupFunction(*M, "b")); in TEST()
1417 LazyCallGraph::Node &C = *CG.lookup(lookupFunction(*M, "c")); in TEST()
1418 EXPECT_EQ(&RC, CG.lookupRefSCC(A)); in TEST()
1419 EXPECT_EQ(&RC, CG.lookupRefSCC(B)); in TEST()
1420 EXPECT_EQ(&RC, CG.lookupRefSCC(C)); in TEST()
1433 EXPECT_EQ(&BRC, CG.lookupRefSCC(B)); in TEST()
1435 EXPECT_EQ(&ACRC, CG.lookupRefSCC(A)); in TEST()
1436 EXPECT_EQ(&ACRC, CG.lookupRefSCC(C)); in TEST()
1437 auto J = CG.postorder_ref_scc_begin(); in TEST()
1474 LazyCallGraph CG = buildCG(*M); in TEST() local
1477 CG.buildRefSCCs(); in TEST()
1478 auto I = CG.postorder_ref_scc_begin(), E = CG.postorder_ref_scc_end(); in TEST()
1485 LazyCallGraph::Node &AN = *CG.lookup(lookupFunction(*M, "a")); in TEST()
1486 LazyCallGraph::Node &BN = *CG.lookup(lookupFunction(*M, "b")); in TEST()
1487 LazyCallGraph::Node &CN = *CG.lookup(lookupFunction(*M, "c")); in TEST()
1488 EXPECT_EQ(&RC, CG.lookupRefSCC(AN)); in TEST()
1489 EXPECT_EQ(&RC, CG.lookupRefSCC(BN)); in TEST()
1490 EXPECT_EQ(&RC, CG.lookupRefSCC(CN)); in TEST()
1491 EXPECT_EQ(&C, CG.lookupSCC(AN)); in TEST()
1492 EXPECT_EQ(&C, CG.lookupSCC(BN)); in TEST()
1493 EXPECT_EQ(&C, CG.lookupSCC(CN)); in TEST()
1499 EXPECT_EQ(&RC, CG.lookupRefSCC(AN)); in TEST()
1500 EXPECT_EQ(&RC, CG.lookupRefSCC(BN)); in TEST()
1501 EXPECT_EQ(&RC, CG.lookupRefSCC(CN)); in TEST()
1502 EXPECT_EQ(&C, CG.lookupSCC(AN)); in TEST()
1503 EXPECT_EQ(&C, CG.lookupSCC(BN)); in TEST()
1504 EXPECT_EQ(&C, CG.lookupSCC(CN)); in TEST()
1505 auto J = CG.postorder_ref_scc_begin(); in TEST()
1515 EXPECT_EQ(&RC, CG.lookupRefSCC(AN)); in TEST()
1516 EXPECT_EQ(&RC, CG.lookupRefSCC(BN)); in TEST()
1517 EXPECT_EQ(&RC, CG.lookupRefSCC(CN)); in TEST()
1518 EXPECT_EQ(&C, CG.lookupSCC(AN)); in TEST()
1519 EXPECT_EQ(&C, CG.lookupSCC(BN)); in TEST()
1520 EXPECT_EQ(&C, CG.lookupSCC(CN)); in TEST()
1521 J = CG.postorder_ref_scc_begin(); in TEST()
1551 LazyCallGraph CG = buildCG(*M); in TEST() local
1554 CG.buildRefSCCs(); in TEST()
1555 auto I = CG.postorder_ref_scc_begin(); in TEST()
1557 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
1562 LazyCallGraph::Node &AN = *CG.lookup(lookupFunction(*M, "a")); in TEST()
1563 LazyCallGraph::Node &BN = *CG.lookup(lookupFunction(*M, "b")); in TEST()
1564 LazyCallGraph::Node &CN = *CG.lookup(lookupFunction(*M, "c")); in TEST()
1565 EXPECT_EQ(&AC, CG.lookupSCC(AN)); in TEST()
1566 EXPECT_EQ(&AC, CG.lookupSCC(BN)); in TEST()
1567 EXPECT_EQ(&AC, CG.lookupSCC(CN)); in TEST()
1575 EXPECT_EQ(&AC, CG.lookupSCC(AN)); in TEST()
1576 EXPECT_EQ(&AC, CG.lookupSCC(BN)); in TEST()
1577 EXPECT_EQ(&AC, CG.lookupSCC(CN)); in TEST()
1584 EXPECT_EQ(&AC, CG.lookupSCC(AN)); in TEST()
1585 LazyCallGraph::SCC &BC = *CG.lookupSCC(BN); in TEST()
1587 EXPECT_EQ(&BC, CG.lookupSCC(CN)); in TEST()
1600 EXPECT_EQ(&AC, CG.lookupSCC(AN)); in TEST()
1601 EXPECT_EQ(&BC, CG.lookupSCC(BN)); in TEST()
1602 LazyCallGraph::SCC &CC = *CG.lookupSCC(CN); in TEST()
1644 LazyCallGraph CG = buildCG(*M); in TEST() local
1647 CG.buildRefSCCs(); in TEST()
1648 auto I = CG.postorder_ref_scc_begin(); in TEST()
1650 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
1652 LazyCallGraph::Node &A = *CG.lookup(lookupFunction(*M, "a")); in TEST()
1653 LazyCallGraph::Node &B = *CG.lookup(lookupFunction(*M, "b")); in TEST()
1654 LazyCallGraph::Node &C = *CG.lookup(lookupFunction(*M, "c")); in TEST()
1655 LazyCallGraph::Node &D = *CG.lookup(lookupFunction(*M, "d")); in TEST()
1656 LazyCallGraph::SCC &AC = *CG.lookupSCC(A); in TEST()
1657 LazyCallGraph::SCC &BC = *CG.lookupSCC(B); in TEST()
1658 LazyCallGraph::SCC &CC = *CG.lookupSCC(C); in TEST()
1659 LazyCallGraph::SCC &DC = *CG.lookupSCC(D); in TEST()
1697 EXPECT_EQ(&BC, CG.lookupSCC(B)); in TEST()
1698 EXPECT_EQ(&BC, CG.lookupSCC(C)); in TEST()
1756 LazyCallGraph CG = buildCG(*M); in TEST() local
1759 CG.buildRefSCCs(); in TEST()
1760 auto I = CG.postorder_ref_scc_begin(); in TEST()
1762 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
1764 LazyCallGraph::Node &A = *CG.lookup(lookupFunction(*M, "a")); in TEST()
1765 LazyCallGraph::Node &B1 = *CG.lookup(lookupFunction(*M, "b1")); in TEST()
1766 LazyCallGraph::Node &B2 = *CG.lookup(lookupFunction(*M, "b2")); in TEST()
1767 LazyCallGraph::Node &B3 = *CG.lookup(lookupFunction(*M, "b3")); in TEST()
1768 LazyCallGraph::Node &C1 = *CG.lookup(lookupFunction(*M, "c1")); in TEST()
1769 LazyCallGraph::Node &C2 = *CG.lookup(lookupFunction(*M, "c2")); in TEST()
1770 LazyCallGraph::Node &C3 = *CG.lookup(lookupFunction(*M, "c3")); in TEST()
1771 LazyCallGraph::Node &D = *CG.lookup(lookupFunction(*M, "d")); in TEST()
1772 LazyCallGraph::SCC &AC = *CG.lookupSCC(A); in TEST()
1773 LazyCallGraph::SCC &B1C = *CG.lookupSCC(B1); in TEST()
1774 LazyCallGraph::SCC &B2C = *CG.lookupSCC(B2); in TEST()
1775 LazyCallGraph::SCC &B3C = *CG.lookupSCC(B3); in TEST()
1776 LazyCallGraph::SCC &C1C = *CG.lookupSCC(C1); in TEST()
1777 LazyCallGraph::SCC &C2C = *CG.lookupSCC(C2); in TEST()
1778 LazyCallGraph::SCC &C3C = *CG.lookupSCC(C3); in TEST()
1779 LazyCallGraph::SCC &DC = *CG.lookupSCC(D); in TEST()
1886 LazyCallGraph CG = buildCG(*M); in TEST() local
1889 CG.buildRefSCCs(); in TEST()
1890 auto I = CG.postorder_ref_scc_begin(); in TEST()
1892 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
1894 LazyCallGraph::Node &A = *CG.lookup(lookupFunction(*M, "a")); in TEST()
1895 LazyCallGraph::Node &B = *CG.lookup(lookupFunction(*M, "b")); in TEST()
1896 LazyCallGraph::Node &C = *CG.lookup(lookupFunction(*M, "c")); in TEST()
1897 LazyCallGraph::Node &D = *CG.lookup(lookupFunction(*M, "d")); in TEST()
1898 LazyCallGraph::Node &E = *CG.lookup(lookupFunction(*M, "e")); in TEST()
1899 LazyCallGraph::Node &F = *CG.lookup(lookupFunction(*M, "f")); in TEST()
1900 LazyCallGraph::Node &G = *CG.lookup(lookupFunction(*M, "g")); in TEST()
1901 LazyCallGraph::SCC &AC = *CG.lookupSCC(A); in TEST()
1902 LazyCallGraph::SCC &BC = *CG.lookupSCC(B); in TEST()
1903 LazyCallGraph::SCC &CC = *CG.lookupSCC(C); in TEST()
1904 LazyCallGraph::SCC &DC = *CG.lookupSCC(D); in TEST()
1905 LazyCallGraph::SCC &EC = *CG.lookupSCC(E); in TEST()
1906 LazyCallGraph::SCC &FC = *CG.lookupSCC(F); in TEST()
1907 LazyCallGraph::SCC &GC = *CG.lookupSCC(G); in TEST()
1969 LazyCallGraph CG = buildCG(*M); in TEST() local
1971 CG.buildRefSCCs(); in TEST()
1972 auto I = CG.postorder_ref_scc_begin(); in TEST()
1975 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
1977 LazyCallGraph::Node &F = *CG.lookup(lookupFunction(*M, "f")); in TEST()
1978 LazyCallGraph::Node &G = *CG.lookup(lookupFunction(*M, "g")); in TEST()
1979 EXPECT_EQ(&FRC, CG.lookupRefSCC(F)); in TEST()
1980 EXPECT_EQ(&GRC, CG.lookupRefSCC(G)); in TEST()
1998 LazyCallGraph CG = buildCG(*M); in TEST() local
2000 CG.buildRefSCCs(); in TEST()
2001 auto I = CG.postorder_ref_scc_begin(); in TEST()
2004 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2006 LazyCallGraph::Node &F = *CG.lookup(lookupFunction(*M, "f")); in TEST()
2007 LazyCallGraph::Node &G = *CG.lookup(lookupFunction(*M, "g")); in TEST()
2008 EXPECT_EQ(&FRC, CG.lookupRefSCC(F)); in TEST()
2009 EXPECT_EQ(&GRC, CG.lookupRefSCC(G)); in TEST()
2047 LazyCallGraph CG = buildCG(*M); in TEST() local
2050 CG.buildRefSCCs(); in TEST()
2051 auto I = CG.postorder_ref_scc_begin(); in TEST()
2054 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2060 LazyCallGraph::Node &AN = *CG.lookup(lookupFunction(*M, "a")); in TEST()
2061 LazyCallGraph::Node &BN = *CG.lookup(lookupFunction(*M, "b")); in TEST()
2062 LazyCallGraph::Node &CN = *CG.lookup(lookupFunction(*M, "c")); in TEST()
2063 LazyCallGraph::Node &DN = *CG.lookup(lookupFunction(*M, "d")); in TEST()
2064 EXPECT_EQ(&C1, CG.lookupSCC(DN)); in TEST()
2065 EXPECT_EQ(&C1, CG.lookupSCC(CN)); in TEST()
2066 EXPECT_EQ(&C2, CG.lookupSCC(BN)); in TEST()
2067 EXPECT_EQ(&RC1, CG.lookupRefSCC(DN)); in TEST()
2068 EXPECT_EQ(&RC1, CG.lookupRefSCC(CN)); in TEST()
2069 EXPECT_EQ(&RC1, CG.lookupRefSCC(BN)); in TEST()
2070 EXPECT_EQ(&RC2, CG.lookupRefSCC(AN)); in TEST()
2125 LazyCallGraph CG = buildCG(*M); in TEST() local
2128 LazyCallGraph::Node &AN = CG.get(lookupFunction(*M, "a")); in TEST()
2129 LazyCallGraph::Node &BN = CG.get(lookupFunction(*M, "b")); in TEST()
2130 LazyCallGraph::Node &CN = CG.get(lookupFunction(*M, "c")); in TEST()
2131 LazyCallGraph::Node &DN = CG.get(lookupFunction(*M, "d")); in TEST()
2132 LazyCallGraph::Node &DeadN = CG.get(lookupFunction(*M, "dead")); in TEST()
2138 CG.insertEdge(AN, DeadN, LazyCallGraph::Edge::Ref); in TEST()
2139 CG.insertEdge(BN, DeadN, LazyCallGraph::Edge::Ref); in TEST()
2140 CG.insertEdge(CN, DeadN, LazyCallGraph::Edge::Ref); in TEST()
2141 CG.insertEdge(DN, DeadN, LazyCallGraph::Edge::Ref); in TEST()
2144 CG.buildRefSCCs(); in TEST()
2145 auto I = CG.postorder_ref_scc_begin(); in TEST()
2149 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2155 EXPECT_EQ(&DeadRC, CG.lookupRefSCC(DeadN)); in TEST()
2156 EXPECT_EQ(&C1, CG.lookupSCC(DN)); in TEST()
2157 EXPECT_EQ(&C1, CG.lookupSCC(CN)); in TEST()
2158 EXPECT_EQ(&C2, CG.lookupSCC(BN)); in TEST()
2159 EXPECT_EQ(&RC1, CG.lookupRefSCC(DN)); in TEST()
2160 EXPECT_EQ(&RC1, CG.lookupRefSCC(CN)); in TEST()
2161 EXPECT_EQ(&RC1, CG.lookupRefSCC(BN)); in TEST()
2162 EXPECT_EQ(&RC2, CG.lookupRefSCC(AN)); in TEST()
2166 CG.removeDeadFunction(DeadN.getFunction()); in TEST()
2170 I = CG.postorder_ref_scc_begin(); in TEST()
2173 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2181 LazyCallGraph CG = buildCG(*M); in TEST() local
2184 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2187 CG.buildRefSCCs(); in TEST()
2188 auto I = CG.postorder_ref_scc_begin(); in TEST()
2190 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2202 CG.addSplitFunction(F, *G); in TEST()
2204 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2207 I = CG.postorder_ref_scc_begin(); in TEST()
2209 EXPECT_EQ(RC1, CG.lookupRefSCC(*GN)); in TEST()
2212 EXPECT_EQ(RC2, CG.lookupRefSCC(FN)); in TEST()
2213 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2221 LazyCallGraph CG = buildCG(*M); in TEST() local
2224 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2227 CG.buildRefSCCs(); in TEST()
2228 auto I = CG.postorder_ref_scc_begin(); in TEST()
2230 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2243 CG.addSplitFunction(F, *G); in TEST()
2245 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2248 I = CG.postorder_ref_scc_begin(); in TEST()
2250 EXPECT_EQ(RC1, CG.lookupRefSCC(*GN)); in TEST()
2253 EXPECT_EQ(RC2, CG.lookupRefSCC(FN)); in TEST()
2254 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2262 LazyCallGraph CG = buildCG(*M); in TEST() local
2265 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2268 CG.buildRefSCCs(); in TEST()
2269 auto I = CG.postorder_ref_scc_begin(); in TEST()
2271 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2285 CG.addSplitFunction(F, *G); in TEST()
2287 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2290 I = CG.postorder_ref_scc_begin(); in TEST()
2292 EXPECT_EQ(RC, CG.lookupRefSCC(*GN)); in TEST()
2294 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2297 EXPECT_EQ(CG.lookupSCC(*GN), &(*RC)[0]); in TEST()
2298 EXPECT_EQ(CG.lookupSCC(FN), &(*RC)[1]); in TEST()
2306 LazyCallGraph CG = buildCG(*M); in TEST() local
2309 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2312 CG.buildRefSCCs(); in TEST()
2313 auto I = CG.postorder_ref_scc_begin(); in TEST()
2315 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2330 CG.addSplitFunction(F, *G); in TEST()
2332 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2335 I = CG.postorder_ref_scc_begin(); in TEST()
2337 EXPECT_EQ(RC, CG.lookupRefSCC(*GN)); in TEST()
2339 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2343 EXPECT_EQ(&CG.lookupSCC(*GN)->getOuterRefSCC(), RC); in TEST()
2344 EXPECT_EQ(&CG.lookupSCC(FN)->getOuterRefSCC(), RC); in TEST()
2352 LazyCallGraph CG = buildCG(*M); in TEST() local
2355 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2358 CG.buildRefSCCs(); in TEST()
2359 auto I = CG.postorder_ref_scc_begin(); in TEST()
2361 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2376 CG.addSplitFunction(F, *G); in TEST()
2378 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2381 I = CG.postorder_ref_scc_begin(); in TEST()
2383 EXPECT_EQ(RC, CG.lookupRefSCC(*GN)); in TEST()
2385 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2388 EXPECT_EQ(CG.lookupSCC(FN), &(*RC)[0]); in TEST()
2389 EXPECT_EQ(CG.lookupSCC(*GN), &(*RC)[1]); in TEST()
2397 LazyCallGraph CG = buildCG(*M); in TEST() local
2400 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2403 CG.buildRefSCCs(); in TEST()
2404 auto I = CG.postorder_ref_scc_begin(); in TEST()
2406 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2420 CG.addSplitFunction(F, *G); in TEST()
2422 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2425 I = CG.postorder_ref_scc_begin(); in TEST()
2427 EXPECT_EQ(RC, CG.lookupRefSCC(*GN)); in TEST()
2429 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2432 EXPECT_EQ(CG.lookupSCC(FN), &(*RC)[0]); in TEST()
2433 EXPECT_EQ(CG.lookupSCC(*GN), &(*RC)[0]); in TEST()
2446 LazyCallGraph CG = buildCG(*M); in TEST() local
2449 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2451 LazyCallGraph::Node &F2N = CG.get(F2); in TEST()
2454 CG.buildRefSCCs(); in TEST()
2455 auto I = CG.postorder_ref_scc_begin(); in TEST()
2457 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2471 CG.addSplitFunction(F, *G); in TEST()
2473 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2476 I = CG.postorder_ref_scc_begin(); in TEST()
2478 EXPECT_EQ(RC, CG.lookupRefSCC(*GN)); in TEST()
2480 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2483 EXPECT_EQ(CG.lookupSCC(FN), &(*RC)[0]); in TEST()
2484 EXPECT_EQ(CG.lookupSCC(F2N), &(*RC)[0]); in TEST()
2485 EXPECT_EQ(CG.lookupSCC(*GN), &(*RC)[0]); in TEST()
2498 LazyCallGraph CG = buildCG(*M); in TEST() local
2501 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2503 LazyCallGraph::Node &F2N = CG.get(F2); in TEST()
2506 CG.buildRefSCCs(); in TEST()
2507 auto I = CG.postorder_ref_scc_begin(); in TEST()
2509 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2524 CG.addSplitFunction(F, *G); in TEST()
2526 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2529 I = CG.postorder_ref_scc_begin(); in TEST()
2531 EXPECT_EQ(RC, CG.lookupRefSCC(*GN)); in TEST()
2533 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2536 EXPECT_EQ(CG.lookupSCC(FN), &(*RC)[0]); in TEST()
2537 EXPECT_EQ(CG.lookupSCC(F2N), &(*RC)[0]); in TEST()
2538 EXPECT_EQ(CG.lookupSCC(*GN), &(*RC)[1]); in TEST()
2551 LazyCallGraph CG = buildCG(*M); in TEST() local
2554 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2556 LazyCallGraph::Node &F2N = CG.get(F2); in TEST()
2559 CG.buildRefSCCs(); in TEST()
2560 auto I = CG.postorder_ref_scc_begin(); in TEST()
2562 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2576 CG.addSplitFunction(F, *G); in TEST()
2578 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2581 I = CG.postorder_ref_scc_begin(); in TEST()
2583 EXPECT_EQ(RC, CG.lookupRefSCC(*GN)); in TEST()
2585 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2588 EXPECT_EQ(CG.lookupSCC(*GN), &(*RC)[0]); in TEST()
2589 EXPECT_EQ(CG.lookupSCC(FN), &(*RC)[1]); in TEST()
2590 EXPECT_EQ(CG.lookupSCC(F2N), &(*RC)[1]); in TEST()
2598 LazyCallGraph CG = buildCG(*M); in TEST() local
2601 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2604 CG.buildRefSCCs(); in TEST()
2605 auto I = CG.postorder_ref_scc_begin(); in TEST()
2607 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2620 CG.addSplitRefRecursiveFunctions(F, SmallVector<Function *, 1>({G})); in TEST()
2622 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2625 I = CG.postorder_ref_scc_begin(); in TEST()
2627 EXPECT_EQ(RC1, CG.lookupRefSCC(*GN)); in TEST()
2630 EXPECT_EQ(RC2, CG.lookupRefSCC(FN)); in TEST()
2631 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2639 LazyCallGraph CG = buildCG(*M); in TEST() local
2642 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2645 CG.buildRefSCCs(); in TEST()
2646 auto I = CG.postorder_ref_scc_begin(); in TEST()
2648 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2663 CG.addSplitRefRecursiveFunctions(F, SmallVector<Function *, 1>({G})); in TEST()
2665 LazyCallGraph::Node *GN = CG.lookup(*G); in TEST()
2668 I = CG.postorder_ref_scc_begin(); in TEST()
2670 EXPECT_EQ(RC, CG.lookupRefSCC(*GN)); in TEST()
2672 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2676 EXPECT_EQ(&CG.lookupSCC(*GN)->getOuterRefSCC(), RC); in TEST()
2677 EXPECT_EQ(&CG.lookupSCC(FN)->getOuterRefSCC(), RC); in TEST()
2685 LazyCallGraph CG = buildCG(*M); in TEST() local
2688 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2691 CG.buildRefSCCs(); in TEST()
2692 auto I = CG.postorder_ref_scc_begin(); in TEST()
2694 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2716 CG.addSplitRefRecursiveFunctions(F, SmallVector<Function *, 1>({G1, G2})); in TEST()
2718 LazyCallGraph::Node *G1N = CG.lookup(*G1); in TEST()
2720 LazyCallGraph::Node *G2N = CG.lookup(*G2); in TEST()
2723 I = CG.postorder_ref_scc_begin(); in TEST()
2726 EXPECT_EQ(RC1, CG.lookupRefSCC(*G1N)); in TEST()
2727 EXPECT_EQ(RC1, CG.lookupRefSCC(*G2N)); in TEST()
2730 EXPECT_EQ(RC2, CG.lookupRefSCC(FN)); in TEST()
2731 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2739 LazyCallGraph CG = buildCG(*M); in TEST() local
2742 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2745 CG.buildRefSCCs(); in TEST()
2746 auto I = CG.postorder_ref_scc_begin(); in TEST()
2748 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2772 CG.addSplitRefRecursiveFunctions(F, SmallVector<Function *, 1>({G1, G2})); in TEST()
2774 LazyCallGraph::Node *G1N = CG.lookup(*G1); in TEST()
2776 LazyCallGraph::Node *G2N = CG.lookup(*G2); in TEST()
2779 I = CG.postorder_ref_scc_begin(); in TEST()
2782 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2786 EXPECT_EQ(&CG.lookupSCC(FN)->getOuterRefSCC(), RC); in TEST()
2787 EXPECT_EQ(&CG.lookupSCC(*G1N)->getOuterRefSCC(), RC); in TEST()
2788 EXPECT_EQ(&CG.lookupSCC(*G2N)->getOuterRefSCC(), RC); in TEST()
2789 EXPECT_EQ(RC, CG.lookupRefSCC(*G1N)); in TEST()
2790 EXPECT_EQ(RC, CG.lookupRefSCC(*G2N)); in TEST()
2804 LazyCallGraph CG = buildCG(*M); in TEST() local
2807 LazyCallGraph::Node &FN = CG.get(F); in TEST()
2809 LazyCallGraph::Node &F2N = CG.get(F); in TEST()
2812 CG.buildRefSCCs(); in TEST()
2813 auto I = CG.postorder_ref_scc_begin(); in TEST()
2815 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()
2839 CG.addSplitRefRecursiveFunctions(F, SmallVector<Function *, 1>({G1, G2})); in TEST()
2841 LazyCallGraph::Node *G1N = CG.lookup(*G1); in TEST()
2843 LazyCallGraph::Node *G2N = CG.lookup(*G2); in TEST()
2846 I = CG.postorder_ref_scc_begin(); in TEST()
2850 EXPECT_EQ(RC, CG.lookupRefSCC(*G1N)); in TEST()
2851 EXPECT_EQ(RC, CG.lookupRefSCC(*G2N)); in TEST()
2852 EXPECT_EQ(RC, CG.lookupRefSCC(FN)); in TEST()
2853 EXPECT_EQ(RC, CG.lookupRefSCC(F2N)); in TEST()
2854 EXPECT_EQ(CG.postorder_ref_scc_end(), I); in TEST()