Lines Matching refs:Edge
297 void eraseCalleeEdge(const ContextEdge *Edge);
298 void eraseCallerEdge(const ContextEdge *Edge);
346 friend raw_ostream &operator<<(raw_ostream &OS, const ContextEdge &Edge) { in operator <<() argument
347 Edge.print(OS); in operator <<()
520 moveEdgeToNewCalleeClone(const std::shared_ptr<ContextEdge> &Edge,
527 void moveEdgeToExistingCalleeClone(const std::shared_ptr<ContextEdge> &Edge,
813 for (auto &Edge : CallerEdges) { in addOrUpdateCallerEdge() local
814 if (Edge->Caller == Caller) { in addOrUpdateCallerEdge()
815 Edge->AllocTypes |= (uint8_t)AllocType; in addOrUpdateCallerEdge()
816 Edge->getContextIds().insert(ContextId); in addOrUpdateCallerEdge()
820 std::shared_ptr<ContextEdge> Edge = std::make_shared<ContextEdge>( in addOrUpdateCallerEdge() local
822 CallerEdges.push_back(Edge); in addOrUpdateCallerEdge()
823 Caller->CalleeEdges.push_back(Edge); in addOrUpdateCallerEdge()
830 auto Edge = *EI; in removeNoneTypeCalleeEdges() local
831 if (Edge->AllocTypes == (uint8_t)AllocationType::None) { in removeNoneTypeCalleeEdges()
832 assert(Edge->ContextIds.empty()); in removeNoneTypeCalleeEdges()
833 Edge->Callee->eraseCallerEdge(Edge.get()); in removeNoneTypeCalleeEdges()
844 for (const auto &Edge : CalleeEdges) in findEdgeFromCallee() local
845 if (Edge->Callee == Callee) in findEdgeFromCallee()
846 return Edge.get(); in findEdgeFromCallee()
854 for (const auto &Edge : CallerEdges) in findEdgeFromCaller() local
855 if (Edge->Caller == Caller) in findEdgeFromCaller()
856 return Edge.get(); in findEdgeFromCaller()
862 eraseCalleeEdge(const ContextEdge *Edge) { in eraseCalleeEdge() argument
864 CalleeEdges, [Edge](const std::shared_ptr<ContextEdge> &CalleeEdge) { in eraseCalleeEdge()
865 return CalleeEdge.get() == Edge; in eraseCalleeEdge()
873 eraseCallerEdge(const ContextEdge *Edge) { in eraseCallerEdge() argument
875 CallerEdges, [Edge](const std::shared_ptr<ContextEdge> &CallerEdge) { in eraseCallerEdge()
876 return CallerEdge.get() == Edge; in eraseCallerEdge()
1023 for (const auto &Edge : Node->CallerEdges) { in propagateDuplicateContextIds() local
1024 auto Inserted = Visited.insert(Edge.get()); in propagateDuplicateContextIds()
1027 ContextNode *NextNode = Edge->Caller; in propagateDuplicateContextIds()
1028 DenseSet<uint32_t> NewIdsToAdd = GetNewIds(Edge->getContextIds()); in propagateDuplicateContextIds()
1032 Edge->getContextIds().insert(NewIdsToAdd.begin(), NewIdsToAdd.end()); in propagateDuplicateContextIds()
1061 auto Edge = *EI; in connectNewNode() local
1066 set_subtract(Edge->getContextIds(), RemainingContextIds, NewEdgeContextIds, in connectNewNode()
1076 Edge->Callee, NewNode, computeAllocType(NewEdgeContextIds), in connectNewNode()
1082 NewNode, Edge->Caller, computeAllocType(NewEdgeContextIds), in connectNewNode()
1088 if (Edge->getContextIds().empty()) { in connectNewNode()
1090 Edge->Callee->eraseCallerEdge(Edge.get()); in connectNewNode()
1093 Edge->Caller->eraseCalleeEdge(Edge.get()); in connectNewNode()
1116 for (auto &Edge : CallerEdges) { in assignStackNodesPostOrder() local
1118 if (!Edge) in assignStackNodesPostOrder()
1120 assignStackNodesPostOrder(Edge->Caller, Visited, StackIdToMatchingCalls); in assignStackNodesPostOrder()
1189 auto *Edge = CurNode->findEdgeFromCallee(PrevNode); in assignStackNodesPostOrder() local
1190 if (!Edge) { in assignStackNodesPostOrder()
1195 set_intersect(SavedContextIds, Edge->getContextIds()); in assignStackNodesPostOrder()
1349 auto *Edge = CurNode->findEdgeFromCaller(PrevNode); in updateStackNodes() local
1359 if (!Edge) { in updateStackNodes()
1367 set_intersect(StackSequenceContextIds, Edge->getContextIds()); in updateStackNodes()
1688 auto Edge = *EI; in handleCallsitesWithMultipleTargets() local
1689 if (!Edge->Callee->hasCall()) { in handleCallsitesWithMultipleTargets()
1693 assert(NodeToCallingFunc.count(Edge->Callee)); in handleCallsitesWithMultipleTargets()
1731 auto Edge = *EI; in calleesMatch() local
1732 const FuncTy *ProfiledCalleeFunc = NodeToCallingFunc[Edge->Callee]; in calleesMatch()
1733 const FuncTy *CallerFunc = NodeToCallingFunc[Edge->Caller]; in calleesMatch()
1749 auto AddEdge = [Edge, &EI](ContextNode *Caller, ContextNode *Callee) { in calleesMatch()
1754 CurEdge->ContextIds.insert(Edge->ContextIds.begin(), in calleesMatch()
1755 Edge->ContextIds.end()); in calleesMatch()
1756 CurEdge->AllocTypes |= Edge->AllocTypes; in calleesMatch()
1762 Callee, Caller, Edge->AllocTypes, Edge->ContextIds); in calleesMatch()
1764 if (Caller == Edge->Caller) { in calleesMatch()
1770 assert(*EI == Edge && in calleesMatch()
1778 auto *CurCalleeNode = Edge->Callee; in calleesMatch()
1784 NewNode->ContextIds.insert(Edge->ContextIds.begin(), in calleesMatch()
1785 Edge->ContextIds.end()); in calleesMatch()
1786 NewNode->AllocTypes |= Edge->AllocTypes; in calleesMatch()
1795 NewNode->ContextIds = Edge->ContextIds; in calleesMatch()
1796 NewNode->AllocTypes = Edge->AllocTypes; in calleesMatch()
1806 AddEdge(Edge->Caller, CurCalleeNode); in calleesMatch()
1809 Edge->Callee->eraseCallerEdge(Edge.get()); in calleesMatch()
1810 EI = Edge->Caller->CalleeEdges.erase(EI); in calleesMatch()
2091 for (auto &Edge : CalleeEdges) in print() local
2092 OS << "\t\t" << *Edge << "\n"; in print()
2094 for (auto &Edge : CallerEdges) in print() local
2095 OS << "\t\t" << *Edge << "\n"; in print()
2146 const std::shared_ptr<ContextEdge<DerivedCCG, FuncTy, CallTy>> &Edge) { in checkEdge() argument
2149 assert(Edge->AllocTypes != (uint8_t)AllocationType::None); in checkEdge()
2150 assert(!Edge->ContextIds.empty()); in checkEdge()
2166 const auto &Edge = *EI; in checkNode() local
2168 checkEdge<DerivedCCG, FuncTy, CallTy>(Edge); in checkNode()
2169 set_union(CallerEdgeContextIds, Edge->ContextIds); in checkNode()
2182 const auto &Edge = *EI; in checkNode() local
2184 checkEdge<DerivedCCG, FuncTy, CallTy>(Edge); in checkNode()
2185 set_union(CalleeEdgeContextIds, Edge->ContextIds); in checkNode()
2196 for (auto &Edge : Node->CallerEdges) in check() local
2197 checkEdge<DerivedCCG, FuncTy, CallTy>(Edge); in check()
2293 auto &Edge = *(ChildIter.getCurrent()); in getEdgeAttributes() local
2294 return (Twine("tooltip=\"") + getContextIds(Edge->ContextIds) + "\"" + in getEdgeAttributes()
2295 Twine(",fillcolor=\"") + getColor(Edge->AllocTypes) + "\"") in getEdgeAttributes()
2350 const std::shared_ptr<ContextEdge> &Edge, EdgeIter *CallerEdgeI) { in moveEdgeToNewCalleeClone() argument
2351 ContextNode *Node = Edge->Callee; in moveEdgeToNewCalleeClone()
2358 moveEdgeToExistingCalleeClone(Edge, Clone, CallerEdgeI, /*NewClone=*/true); in moveEdgeToNewCalleeClone()
2364 moveEdgeToExistingCalleeClone(const std::shared_ptr<ContextEdge> &Edge, in moveEdgeToExistingCalleeClone() argument
2369 assert(NewCallee->getOrigNode() == Edge->Callee->getOrigNode()); in moveEdgeToExistingCalleeClone()
2370 auto &EdgeContextIds = Edge->getContextIds(); in moveEdgeToExistingCalleeClone()
2371 ContextNode *OldCallee = Edge->Callee; in moveEdgeToExistingCalleeClone()
2375 OldCallee->eraseCallerEdge(Edge.get()); in moveEdgeToExistingCalleeClone()
2376 Edge->Callee = NewCallee; in moveEdgeToExistingCalleeClone()
2377 NewCallee->CallerEdges.push_back(Edge); in moveEdgeToExistingCalleeClone()
2382 NewCallee->AllocTypes |= Edge->AllocTypes; in moveEdgeToExistingCalleeClone()
2473 for (auto &Edge : CallerEdges) { in identifyClones() local
2475 if (Edge->Callee == nullptr && Edge->Caller == nullptr) { in identifyClones()
2476 assert(!llvm::count(Node->CallerEdges, Edge)); in identifyClones()
2480 if (!Visited.count(Edge->Caller) && !Edge->Caller->CloneOf) { in identifyClones()
2481 identifyClones(Edge->Caller, Visited); in identifyClones()
2877 const std::shared_ptr<ContextEdge> &Edge = *EI; in assignFunctions() local
2879 CallsiteToCalleeFuncCloneMap[Edge->Caller]; in assignFunctions()
3006 auto Edge = *EI; in assignFunctions() local
3008 if (!Edge->Caller->hasCall()) { in assignFunctions()
3014 if (CallsiteToCalleeFuncCloneMap.count(Edge->Caller)) { in assignFunctions()
3016 CallsiteToCalleeFuncCloneMap[Edge->Caller]; in assignFunctions()
3056 moveEdgeToExistingCalleeClone(Edge, NewClone, &EI); in assignFunctions()
3061 ContextNode *NewClone = moveEdgeToNewCalleeClone(Edge, &EI); in assignFunctions()
3121 RecordCalleeFuncOfCallsite(Edge->Caller, in assignFunctions()
3155 for (auto &Edge : Node->CallerEdges) in assignFunctions() local
3156 UpdateCalls(Edge->Caller, Visited, UpdateCalls); in assignFunctions()