Lines Matching refs:Chain
83 class Chain;
161 Chain *CurChain{nullptr};
212 class Chain { class
214 Chain(const Chain &) = delete;
215 Chain(Chain &&) = default;
216 Chain &operator=(const Chain &) = delete;
217 Chain &operator=(Chain &&) = default;
219 explicit Chain(size_t Id, Block *Block) in Chain() function in llvm::bolt::Chain
240 const std::vector<std::pair<Chain *, Edge *>> &edges() const { return Edges; } in edges()
242 Edge *getEdge(Chain *Other) const { in getEdge()
243 for (std::pair<Chain *, Edge *> It : Edges) in getEdge()
249 void removeEdge(Chain *Other) { in removeEdge()
260 void addEdge(Chain *Other, Edge *Edge) { Edges.emplace_back(Other, Edge); } in addEdge()
262 void merge(Chain *Other, const std::vector<Block *> &MergedBlocks) { in merge()
274 void mergeEdges(Chain *Other);
291 std::vector<std::pair<Chain *, Edge *>> Edges;
310 void changeEndpoint(Chain *From, Chain *To) { in changeEndpoint()
326 bool hasCachedMergeGain(Chain *Src, Chain *Dst) const { in hasCachedMergeGain()
330 MergeGainTy getCachedMergeGain(Chain *Src, Chain *Dst) const { in getCachedMergeGain()
334 void setCachedMergeGain(Chain *Src, Chain *Dst, MergeGainTy MergeGain) { in setCachedMergeGain()
350 Chain *SrcChain{nullptr};
351 Chain *DstChain{nullptr};
364 void Chain::mergeEdges(Chain *Other) { in mergeEdges()
369 Chain *const DstChain = EdgeIt.first; in mergeEdges()
371 Chain *const TargetChain = DstChain == Other ? this : DstChain; in mergeEdges()
430 bool compareChainPairs(const Chain *A1, const Chain *B1, const Chain *A2, in compareChainPairs()
431 const Chain *B2) { in compareChainPairs()
606 Chain *BestChainPred = nullptr; in mergeChainPairs()
607 Chain *BestChainSucc = nullptr; in mergeChainPairs()
610 for (Chain *ChainPred : HotChains) { in mergeChainPairs()
613 Chain *ChainSucc = EdgeIter.first; in mergeChainPairs()
656 Chain *SrcChain = AllBlocks[SrcIndex].CurChain; in mergeColdChains()
657 Chain *DstChain = AllBlocks[DstIndex].CurChain; in mergeColdChains()
697 MergeGainTy mergeGain(Chain *ChainPred, Chain *ChainSucc, Edge *Edge) const { in mergeGain()
740 const Chain *ChainPred, const Chain *ChainSucc, in computeMergeGain()
790 void mergeChains(Chain *Into, Chain *From, size_t MergeOffset, in mergeChains()
812 for (std::pair<Chain *, Edge *> EdgeIter : Into->edges()) in mergeChains()
819 std::vector<Chain *> SortedChains; in concatChains()
820 for (Chain &Chain : AllChains) in concatChains()
821 if (Chain.blocks().size() > 0) in concatChains()
822 SortedChains.push_back(&Chain); in concatChains()
825 llvm::stable_sort(SortedChains, [](const Chain *C1, const Chain *C2) { in concatChains()
845 for (Chain *Chain : SortedChains) in concatChains()
846 for (Block *Block : Chain->blocks()) in concatChains()
858 std::vector<Chain> AllChains;
861 std::vector<Chain *> HotChains;