Lines Matching refs:ContextNode
235 struct ContextNode { struct in __anonf01a58700111::CallsiteContextGraph
335 std::vector<ContextNode *> Clones; argument
338 ContextNode *CloneOf = nullptr; argument
340 ContextNode(bool IsAllocation) : IsAllocation(IsAllocation), Call() {} in ContextNode() function
342 ContextNode(bool IsAllocation, CallInfo C) in ContextNode() function
345 void addClone(ContextNode *Clone) { in addClone() argument
356 ContextNode *getOrigNode() { in getOrigNode() argument
362 void addOrUpdateCallerEdge(ContextNode *Caller, AllocationType AllocType,
365 ContextEdge *findEdgeFromCallee(const ContextNode *Callee);
366 ContextEdge *findEdgeFromCaller(const ContextNode *Caller);
387 friend raw_ostream &operator<<(raw_ostream &OS, const ContextNode &Node) { in operator <<()
396 ContextNode *Callee;
397 ContextNode *Caller;
406 ContextEdge(ContextNode *Callee, ContextNode *Caller, uint8_t AllocType, in ContextEdge()
424 void removeNoneTypeCalleeEdges(ContextNode *Node);
426 recursivelyRemoveNoneTypeCalleeEdges(ContextNode *Node,
427 DenseSet<const ContextNode *> &Visited);
438 ContextNode *addAllocNode(CallInfo Call, const FuncTy *F);
442 void addStackNodesForMIB(ContextNode *AllocNode,
461 std::map<const ContextNode *, const FuncTy *> NodeToCallingFunc;
476 ContextNode *Node, DenseSet<const ContextNode *> &Visited,
493 void connectNewNode(ContextNode *NewNode, ContextNode *OrigNode,
512 MapVector<CallInfo, ContextNode *> &TailCallToContextNodeMap);
566 ContextNode *getNodeForInst(const CallInfo &C);
567 ContextNode *getNodeForAlloc(const CallInfo &C);
568 ContextNode *getNodeForStackId(uint64_t StackId);
590 ContextNode *
601 ContextNode *NewCallee,
610 void identifyClones(ContextNode *Node, DenseSet<const ContextNode *> &Visited,
624 DenseMap<uint64_t, ContextNode *> StackEntryIdToContextNodeMap;
627 MapVector<CallInfo, ContextNode *> AllocationCallToContextNodeMap;
628 MapVector<CallInfo, ContextNode *> NonAllocationCallToContextNodeMap;
631 std::vector<std::unique_ptr<ContextNode>> NodeOwner;
641 using ContextNode = typedef
642 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode;
852 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
855 ContextNode *Node = getNodeForAlloc(C); in getNodeForInst()
863 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
870 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
880 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
881 addOrUpdateCallerEdge(ContextNode *Caller, AllocationType AllocType, in addOrUpdateCallerEdge()
898 DerivedCCG, FuncTy, CallTy>::removeNoneTypeCalleeEdges(ContextNode *Node) { in removeNoneTypeCalleeEdges()
912 CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
913 findEdgeFromCallee(const ContextNode *Callee) { in findEdgeFromCallee()
922 CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
923 findEdgeFromCaller(const ContextNode *Caller) { in findEdgeFromCaller()
931 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
942 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
995 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
1000 std::make_unique<ContextNode>(/*IsAllocation=*/true, Call)); in addAllocNode()
1001 ContextNode *AllocNode = NodeOwner.back().get(); in addAllocNode()
1027 ContextNode *AllocNode, CallStack<NodeT, IteratorT> &StackContext, in addStackNodesForMIB()
1049 ContextNode *PrevNode = AllocNode; in addStackNodesForMIB()
1058 ContextNode *StackNode = getNodeForStackId(StackId); in addStackNodesForMIB()
1061 std::make_unique<ContextNode>(/*IsAllocation=*/false)); in addStackNodesForMIB()
1110 auto UpdateCallers = [&](ContextNode *Node, in propagateDuplicateContextIds()
1117 ContextNode *NextNode = Edge->Caller; in propagateDuplicateContextIds()
1137 ContextNode *NewNode, ContextNode *OrigNode, bool TowardsCallee, in connectNewNode()
1196 static void checkNode(const ContextNode<DerivedCCG, FuncTy, CallTy> *Node, in checkNode()
1233 assignStackNodesPostOrder(ContextNode *Node, in assignStackNodesPostOrder()
1234 DenseSet<const ContextNode *> &Visited, in assignStackNodesPostOrder()
1284 ContextNode *LastNode = getNodeForStackId(LastId); in assignStackNodesPostOrder()
1297 ContextNode *FirstNode = getNodeForStackId(Ids[0]); in assignStackNodesPostOrder()
1307 ContextNode *PrevNode = nullptr; in assignStackNodesPostOrder()
1309 ContextNode *CurNode = getNodeForStackId(Id); in assignStackNodesPostOrder()
1335 std::make_unique<ContextNode>(/*IsAllocation=*/false, Call)); in assignStackNodesPostOrder()
1336 ContextNode *NewNode = NodeOwner.back().get(); in assignStackNodesPostOrder()
1355 ContextNode *CurNode = getNodeForStackId(Id); in assignStackNodesPostOrder()
1381 ContextNode *CurNode = getNodeForStackId(Id); in assignStackNodesPostOrder()
1451 ContextNode *LastNode = getNodeForStackId(LastId); in updateStackNodes()
1474 ContextNode *PrevNode = LastNode; in updateStackNodes()
1475 ContextNode *CurNode = LastNode; in updateStackNodes()
1580 DenseSet<const ContextNode *> Visited; in updateStackNodes()
1662 ContextNode *Node = getNodeForStackId(StackId); in getStackIdsWithContextNodes()
1830 MapVector<CallInfo, ContextNode *> TailCallToContextNodeMap; in handleCallsitesWithMultipleTargets()
1882 MapVector<CallInfo, ContextNode *> &TailCallToContextNodeMap) { in calleesMatch()
1897 auto AddEdge = [Edge, &EI](ContextNode *Caller, ContextNode *Callee) { in calleesMatch()
1928 ContextNode *NewNode = nullptr; in calleesMatch()
1937 std::make_unique<ContextNode>(/*IsAllocation=*/false, NewCall)); in calleesMatch()
2213 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::dump() in dump()
2220 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::print( in print()
2328 using NodeRef = const ContextNode<DerivedCCG, FuncTy, CallTy> *;
2330 using NodePtrTy = std::unique_ptr<ContextNode<DerivedCCG, FuncTy, CallTy>>;
2350 static const ContextNode<DerivedCCG, FuncTy, CallTy> *
2472 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
2476 ContextNode *Node = Edge->Callee; in moveEdgeToNewCalleeClone()
2478 std::make_unique<ContextNode>(Node->IsAllocation, Node->Call)); in moveEdgeToNewCalleeClone()
2479 ContextNode *Clone = NodeOwner.back().get(); in moveEdgeToNewCalleeClone()
2491 ContextNode *NewCallee, EdgeIter *CallerEdgeI, in moveEdgeToExistingCalleeClone()
2498 ContextNode *OldCallee = Edge->Callee; in moveEdgeToExistingCalleeClone()
2613 ContextNode *Node, DenseSet<const ContextNode *> &Visited) { in recursivelyRemoveNoneTypeCalleeEdges()
2638 DenseSet<const ContextNode *> Visited; in identifyClones()
2660 ContextNode *Node, DenseSet<const ContextNode *> &Visited, in identifyClones()
2799 ContextNode *Clone = nullptr; in identifyClones()
2977 DenseMap<ContextNode *, FuncInfo> CallsiteToCalleeFuncCloneMap; in assignFunctions()
2981 auto RecordCalleeFuncOfCallsite = [&](ContextNode *Caller, in assignFunctions()
2996 ContextNode *Node = getNodeForInst(Call); in assignFunctions()
3007 std::map<FuncInfo, ContextNode *> FuncCloneToCurNodeCloneMap; in assignFunctions()
3013 ContextNode *CallsiteClone, in assignFunctions()
3029 std::deque<ContextNode *> ClonesWorklist; in assignFunctions()
3041 ContextNode *Clone = ClonesWorklist.front(); in assignFunctions()
3157 ContextNode *Callee = CalleeEdge->Callee; in assignFunctions()
3163 ContextNode *NewClone = moveEdgeToNewCalleeClone(CalleeEdge); in assignFunctions()
3211 std::map<FuncInfo, ContextNode *> FuncCloneToNewCallsiteCloneMap; in assignFunctions()
3265 ContextNode *NewClone = in assignFunctions()
3272 ContextNode *NewClone = moveEdgeToNewCalleeClone(Edge, &EI); in assignFunctions()
3356 auto UpdateCalls = [&](ContextNode *Node, in assignFunctions()
3357 DenseSet<const ContextNode *> &Visited, in assignFunctions()
3391 DenseSet<const ContextNode *> Visited; in assignFunctions()