Lines Matching refs:BB
103 bool blockEndsInUnreachable(const BasicBlock &BB) { in blockEndsInUnreachable() argument
104 if (!succ_empty(&BB)) in blockEndsInUnreachable()
106 if (BB.empty()) in blockEndsInUnreachable()
108 const Instruction *I = BB.getTerminator(); in blockEndsInUnreachable()
112 void analyzeProfMetadata(BasicBlock *BB, in analyzeProfMetadata() argument
116 BranchInst *CondBr = dyn_cast<BranchInst>(BB->getTerminator()); in analyzeProfMetadata()
138 bool unlikelyExecuted(BasicBlock &BB) { in unlikelyExecuted() argument
140 if (BB.isEHPad() || isa<ResumeInst>(BB.getTerminator())) in unlikelyExecuted()
145 for (Instruction &I : BB) in unlikelyExecuted()
153 if (blockEndsInUnreachable(BB)) { in unlikelyExecuted()
155 dyn_cast_or_null<CallInst>(BB.getTerminator()->getPrevNode())) in unlikelyExecuted()
165 static bool mayExtractBlock(const BasicBlock &BB) { in mayExtractBlock() argument
173 if (BB.hasAddressTaken() || BB.isEHPad()) in mayExtractBlock()
175 auto Term = BB.getTerminator(); in mayExtractBlock()
185 BB, [](const Instruction &I) { return I.getType()->isTokenTy(); })) { in mayExtractBlock()
234 BasicBlock *BB, BranchProbability ColdProbThresh, in isBasicBlockCold() argument
238 if (PSI->isColdBlock(BB, BFI)) in isBasicBlockCold()
242 analyzeProfMetadata(BB, ColdProbThresh, AnnotatedColdBlocks); in isBasicBlockCold()
246 if (AnnotatedColdBlocks.count(BB)) in isBasicBlockCold()
250 if (EnableStaticAnalysis && unlikelyExecuted(*BB)) in isBasicBlockCold()
290 for (BasicBlock *BB : Region) in getOutliningBenefit()
291 for (Instruction &I : BB->instructionsWithoutDebug()) in getOutliningBenefit()
292 if (&I != BB->getTerminator()) in getOutliningBenefit()
314 for (BasicBlock *BB : Region) { in getOutliningPenalty()
317 if (succ_empty(BB)) { in getOutliningPenalty()
318 NoBlocksReturn &= isa<UnreachableInst>(BB->getTerminator()); in getOutliningPenalty()
322 for (BasicBlock *SuccBB : successors(BB)) { in getOutliningPenalty()
479 static unsigned getEntryPointScore(BasicBlock &BB, unsigned Score) { in getEntryPointScore() argument
480 return mayExtractBlock(BB) ? Score : 0; in getEntryPointScore()
505 auto addBlockToRegion = [&](BasicBlock *BB, unsigned Score) { in create() argument
506 RegionBlocks.insert(BB); in create()
507 ColdRegion->Blocks.emplace_back(BB, Score); in create()
618 BasicBlock *BB = Block.first; in takeSingleEntrySubRegion() local
621 BB == SuggestedEntryPoint || DT.dominates(SuggestedEntryPoint, BB); in takeSingleEntrySubRegion()
623 NextEntryPoint = BB; in takeSingleEntrySubRegion()
626 if (InSubRegion && BB != SuggestedEntryPoint) in takeSingleEntrySubRegion()
627 SubRegion.push_back(BB); in takeSingleEntrySubRegion()
680 for (BasicBlock *BB : RPOT) { in outlineColdRegions()
682 if (ColdBlocks.count(BB)) in outlineColdRegions()
686 if (CannotBeOutlinedColdBlocks.count(BB)) in outlineColdRegions()
689 if (!isBasicBlockCold(BB, ColdProbThresh, AnnotatedColdBlocks, BFI)) in outlineColdRegions()
694 BB->dump(); in outlineColdRegions()
702 auto Regions = OutliningRegion::create(*BB, *DT, *PDT); in outlineColdRegions()
716 for (BasicBlock *BB : SubRegion) in outlineColdRegions()
717 BB->dump(); in outlineColdRegions()
750 if ((DT->dominates(BB, Block) && PDT->dominates(Block, BB)) || in outlineColdRegions()
751 (PDT->dominates(BB, Block) && DT->dominates(Block, BB))) in outlineColdRegions()