Lines Matching refs:Chain
115 void merge(MachineBasicBlock *BB, BlockChain *Chain) { in merge() argument
120 if (!Chain) { in merge()
127 assert(BB == *Chain->begin()); in merge()
128 assert(Chain->begin() != Chain->end()); in merge()
132 for (BlockChain::iterator BI = Chain->begin(), BE = Chain->end(); in merge()
135 assert(BlockToChain[*BI] == Chain && "Incoming blocks not in chain"); in merge()
193 void markChainSuccessors(BlockChain &Chain,
198 BlockChain &Chain,
201 BlockChain &Chain, SmallVectorImpl<MachineBasicBlock *> &WorkList,
208 void buildChain(MachineBasicBlock *BB, BlockChain &Chain,
280 BlockChain &Chain, in markChainSuccessors() argument
286 for (BlockChain::iterator CBI = Chain.begin(), CBE = Chain.end(); in markChainSuccessors()
299 if (&Chain == &SuccChain || *SI == LoopHeaderBB) in markChainSuccessors()
320 MachineBasicBlock *BB, BlockChain &Chain, in selectBestSuccessor() argument
341 if (&SuccChain == &Chain) { in selectBestSuccessor()
370 BlockToChain[*PI] == &Chain) in selectBestSuccessor()
426 BlockChain &Chain, SmallVectorImpl<MachineBasicBlock *> &WorkList, in selectBestCandidateBlock() argument
433 IsBlockPlaced(Chain, BlockToChain)), in selectBestCandidateBlock()
442 if (&SuccChain == &Chain) { in selectBestCandidateBlock()
488 BlockChain &Chain, in buildChain() argument
492 assert(BlockToChain[BB] == &Chain); in buildChain()
497 markChainSuccessors(Chain, LoopHeaderBB, BlockWorkList, BlockFilter); in buildChain()
498 BB = *llvm::prior(Chain.end()); in buildChain()
501 assert(BlockToChain[BB] == &Chain); in buildChain()
502 assert(*llvm::prior(Chain.end()) == BB); in buildChain()
507 BestSucc = selectBestSuccessor(BB, Chain, BlockFilter); in buildChain()
513 BestSucc = selectBestCandidateBlock(Chain, BlockWorkList, BlockFilter); in buildChain()
516 BestSucc = getFirstUnplacedBlock(F, Chain, PrevUnplacedBlockIt, in buildChain()
533 Chain.merge(BestSucc, &SuccChain); in buildChain()
534 BB = *llvm::prior(Chain.end()); in buildChain()
538 << getBlockNum(*Chain.begin()) << "\n"); in buildChain()
636 BlockChain &Chain = *BlockToChain[*I]; in findBestLoopExit() local
639 if (*I != *llvm::prior(Chain.end())) in findBestLoopExit()
663 if (&Chain == &SuccChain) { in findBestLoopExit()
812 BlockChain &Chain = *BlockToChain[*BI]; in buildLoopChains() local
813 if (!UpdatedPreds.insert(&Chain)) in buildLoopChains()
816 assert(Chain.LoopPredecessors == 0); in buildLoopChains()
817 for (BlockChain::iterator BCI = Chain.begin(), BCE = Chain.end(); in buildLoopChains()
819 assert(BlockToChain[*BCI] == &Chain); in buildLoopChains()
823 if (BlockToChain[*PI] == &Chain || !LoopBlockSet.count(*PI)) in buildLoopChains()
825 ++Chain.LoopPredecessors; in buildLoopChains()
829 if (Chain.LoopPredecessors == 0) in buildLoopChains()
830 BlockWorkList.push_back(*Chain.begin()); in buildLoopChains()
879 BlockChain *Chain in buildCFGChains() local
897 Chain->merge(NextBB, 0); in buildCFGChains()
913 BlockChain &Chain = *BlockToChain[BB]; in buildCFGChains() local
914 if (!UpdatedPreds.insert(&Chain)) in buildCFGChains()
917 assert(Chain.LoopPredecessors == 0); in buildCFGChains()
918 for (BlockChain::iterator BCI = Chain.begin(), BCE = Chain.end(); in buildCFGChains()
920 assert(BlockToChain[*BCI] == &Chain); in buildCFGChains()
924 if (BlockToChain[*PI] == &Chain) in buildCFGChains()
926 ++Chain.LoopPredecessors; in buildCFGChains()
930 if (Chain.LoopPredecessors == 0) in buildCFGChains()
931 BlockWorkList.push_back(*Chain.begin()); in buildCFGChains()