Lines Matching refs:Chain
190 void merge(MachineBasicBlock *BB, BlockChain *Chain) { in merge() argument
195 if (!Chain) { in merge()
202 assert(BB == *Chain->begin()); in merge()
203 assert(Chain->begin() != Chain->end()); in merge()
207 for (MachineBasicBlock *ChainBB : *Chain) { in merge()
209 assert(BlockToChain[ChainBB] == Chain && "Incoming blocks not in chain"); in merge()
286 void markChainSuccessors(BlockChain &Chain, MachineBasicBlock *LoopHeaderBB,
289 collectViableSuccessors(MachineBasicBlock *BB, BlockChain &Chain,
293 BlockChain &Chain,
300 BranchProbability RealSuccProb, BlockChain &Chain,
303 BlockChain &Chain,
306 selectBestCandidateBlock(BlockChain &Chain,
321 void buildChain(MachineBasicBlock *BB, BlockChain &Chain,
389 BlockChain &Chain, MachineBasicBlock *LoopHeaderBB, in markChainSuccessors() argument
393 for (MachineBasicBlock *MBB : Chain) { in markChainSuccessors()
403 if (&Chain == &SuccChain || Succ == LoopHeaderBB) in markChainSuccessors()
426 MachineBasicBlock *BB, BlockChain &Chain, const BlockFilterSet *BlockFilter, in collectViableSuccessors() argument
451 if (SuccChain == &Chain) { in collectViableSuccessors()
494 MachineBasicBlock *BB, MachineBasicBlock *Succ, BlockChain &Chain, in shouldPredBlockBeOutlined() argument
506 BlockToChain[Pred] == &Chain) in shouldPredBlockBeOutlined()
551 BlockChain &Chain, const BlockFilterSet *BlockFilter) { in hasBetterLayoutPredecessor() argument
627 BlockToChain[Pred] == &Chain) in hasBetterLayoutPredecessor()
670 BlockChain &Chain, in selectBestSuccessor() argument
679 collectViableSuccessors(BB, Chain, BlockFilter, Successors); in selectBestSuccessor()
688 if (shouldPredBlockBeOutlined(BB, Succ, Chain, BlockFilter, SuccProb, in selectBestSuccessor()
696 Chain, BlockFilter)) in selectBestSuccessor()
723 BlockChain &Chain, SmallVectorImpl<MachineBasicBlock *> &WorkList) { in selectBestCandidateBlock() argument
730 return BlockToChain.lookup(BB) == &Chain; in selectBestCandidateBlock()
745 if (&SuccChain == &Chain) in selectBestCandidateBlock()
812 BlockChain &Chain = *BlockToChain[MBB]; in fillWorkLists() local
813 if (!UpdatedPreds.insert(&Chain).second) in fillWorkLists()
816 assert(Chain.UnscheduledPredecessors == 0); in fillWorkLists()
817 for (MachineBasicBlock *ChainBB : Chain) { in fillWorkLists()
818 assert(BlockToChain[ChainBB] == &Chain); in fillWorkLists()
822 if (BlockToChain[Pred] == &Chain) in fillWorkLists()
824 ++Chain.UnscheduledPredecessors; in fillWorkLists()
828 if (Chain.UnscheduledPredecessors != 0) in fillWorkLists()
831 MBB = *Chain.begin(); in fillWorkLists()
839 MachineBasicBlock *BB, BlockChain &Chain, in buildChain() argument
842 assert(BlockToChain[BB] == &Chain && "BlockToChainMap mis-match.\n"); in buildChain()
846 markChainSuccessors(Chain, LoopHeaderBB, BlockFilter); in buildChain()
847 BB = *std::prev(Chain.end()); in buildChain()
850 assert(BlockToChain[BB] == &Chain && "BlockToChainMap mis-match in loop."); in buildChain()
851 assert(*std::prev(Chain.end()) == BB && "BB Not found at end of chain."); in buildChain()
856 MachineBasicBlock *BestSucc = selectBestSuccessor(BB, Chain, BlockFilter); in buildChain()
862 BestSucc = selectBestCandidateBlock(Chain, BlockWorkList); in buildChain()
864 BestSucc = selectBestCandidateBlock(Chain, EHPadWorkList); in buildChain()
867 BestSucc = getFirstUnplacedBlock(Chain, PrevUnplacedBlockIt, BlockFilter); in buildChain()
883 Chain.merge(BestSucc, &SuccChain); in buildChain()
884 BB = *std::prev(Chain.end()); in buildChain()
888 << getBlockName(*Chain.begin()) << "\n"); in buildChain()
981 BlockChain &Chain = *BlockToChain[MBB]; in findBestLoopExit() local
984 if (MBB != *std::prev(Chain.end())) in findBestLoopExit()
1001 if (&Chain == &SuccChain) { in findBestLoopExit()
1414 BlockChain *Chain = in buildCFGChains() local
1432 Chain->merge(NextBB, nullptr); in buildCFGChains()