Lines Matching refs:BasicBlock
167 SmallVector<BasicBlock *, 4> Entries;
170 BasicBlock *ReturnBlock = nullptr;
173 BasicBlock *NonReturnBlock = nullptr;
176 SmallVector<BasicBlock *, 4> ReturnBlockPreds;
185 OutlineRegionInfo(SmallVector<BasicBlock *, 8> Region, in OutlineRegionInfo()
186 BasicBlock *EntryBlock, BasicBlock *ExitBlock, in OutlineRegionInfo()
187 BasicBlock *ReturnBlock) in OutlineRegionInfo()
190 SmallVector<BasicBlock *, 8> Region;
191 BasicBlock *EntryBlock;
192 BasicBlock *ExitBlock;
193 BasicBlock *ReturnBlock;
249 typedef std::pair<Function *, BasicBlock *> FuncBodyCallerPair;
316 std::tuple<DebugLoc, BasicBlock *> getOneDebugLoc(Function *F) { in getOneDebugLoc()
319 BasicBlock *Block = CS.getParent(); in getOneDebugLoc()
334 static int computeBBInlineCost(BasicBlock *BB);
384 BasicBlock *EntryBlock = &F->front(); in computeOutliningColdRegionsInfo()
404 auto IsSingleEntry = [](SmallVectorImpl<BasicBlock *> &BlockList) { in computeOutliningColdRegionsInfo()
405 BasicBlock *Dom = BlockList.front(); in computeOutliningColdRegionsInfo()
410 [&ORE](SmallVectorImpl<BasicBlock *> &BlockList) -> BasicBlock * { in computeOutliningColdRegionsInfo()
411 BasicBlock *ExitBlock = nullptr; in computeOutliningColdRegionsInfo()
432 auto BBProfileCount = [BFI](BasicBlock *BB) { in computeOutliningColdRegionsInfo()
454 BasicBlock *CurrEntry = EntryBlock; in computeOutliningColdRegionsInfo()
455 std::vector<BasicBlock *> DFS; in computeOutliningColdRegionsInfo()
456 DenseMap<BasicBlock *, bool> VisitedMap; in computeOutliningColdRegionsInfo()
490 SmallVector<BasicBlock *, 8> DominateVector; in computeOutliningColdRegionsInfo()
495 BasicBlock *ExitBlock = nullptr; in computeOutliningColdRegionsInfo()
524 BasicBlock *ReturnBlock = ExitBlock->getSingleSuccessor(); in computeOutliningColdRegionsInfo()
548 BasicBlock *EntryBlock = &F->front(); in computeOutliningInfo()
554 auto IsSuccessor = [](BasicBlock *Succ, BasicBlock *BB) { in computeOutliningInfo()
558 auto IsReturnBlock = [](BasicBlock *BB) { in computeOutliningInfo()
563 auto GetReturnBlock = [&](BasicBlock *Succ1, BasicBlock *Succ2) { in computeOutliningInfo()
569 return std::make_tuple<BasicBlock *, BasicBlock *>(nullptr, nullptr); in computeOutliningInfo()
573 auto GetCommonSucc = [&](BasicBlock *Succ1, BasicBlock *Succ2) { in computeOutliningInfo()
579 return std::make_tuple<BasicBlock *, BasicBlock *>(nullptr, nullptr); in computeOutliningInfo()
585 BasicBlock *CurrEntry = EntryBlock; in computeOutliningInfo()
597 BasicBlock *Succ1 = *succ_begin(CurrEntry); in computeOutliningInfo()
598 BasicBlock *Succ2 = *(succ_begin(CurrEntry) + 1); in computeOutliningInfo()
600 BasicBlock *ReturnBlock, *NonReturnBlock; in computeOutliningInfo()
611 BasicBlock *CommSucc; in computeOutliningInfo()
612 BasicBlock *OtherSucc; in computeOutliningInfo()
630 DenseSet<BasicBlock *> Entries; in computeOutliningInfo()
631 for (BasicBlock *E : OutliningInfo->Entries) in computeOutliningInfo()
636 auto HasNonEntryPred = [Entries](BasicBlock *BB) { in computeOutliningInfo()
645 for (BasicBlock *E : OutliningInfo->Entries) { in computeOutliningInfo()
667 BasicBlock *Cand = OutliningInfo->NonReturnBlock; in computeOutliningInfo()
674 BasicBlock *Succ1 = *succ_begin(Cand); in computeOutliningInfo()
675 BasicBlock *Succ2 = *(succ_begin(Cand) + 1); in computeOutliningInfo()
677 BasicBlock *ReturnBlock, *NonReturnBlock; in computeOutliningInfo()
713 BasicBlock *OutliningCallBB = Cloner.OutlinedFunctions.back().second; in getOutliningCallBBRelativeFreq()
834 int PartialInlinerImpl::computeBBInlineCost(BasicBlock *BB) { in computeBBInlineCost()
881 BasicBlock* OutliningCallBB = FuncBBPair.second; in computeOutliningCosts()
887 for (BasicBlock &BB : *OutlinedFunc) in computeOutliningCosts()
942 BasicBlock *CallBB = CS.getInstruction()->getParent(); in computeCallsiteToProfCountMap()
960 ClonedOI->ReturnBlock = cast<BasicBlock>(VMap[OI->ReturnBlock]); in FunctionCloner()
961 ClonedOI->NonReturnBlock = cast<BasicBlock>(VMap[OI->NonReturnBlock]); in FunctionCloner()
962 for (BasicBlock *BB : OI->Entries) { in FunctionCloner()
963 ClonedOI->Entries.push_back(cast<BasicBlock>(VMap[BB])); in FunctionCloner()
965 for (BasicBlock *E : OI->ReturnBlockPreds) { in FunctionCloner()
966 BasicBlock *NewE = cast<BasicBlock>(VMap[E]); in FunctionCloner()
988 SmallVector<BasicBlock *, 8> Region; in FunctionCloner()
989 for (BasicBlock *BB : RegionInfo.Region) { in FunctionCloner()
990 Region.push_back(cast<BasicBlock>(VMap[BB])); in FunctionCloner()
992 BasicBlock *NewEntryBlock = cast<BasicBlock>(VMap[RegionInfo.EntryBlock]); in FunctionCloner()
993 BasicBlock *NewExitBlock = cast<BasicBlock>(VMap[RegionInfo.ExitBlock]); in FunctionCloner()
994 BasicBlock *NewReturnBlock = nullptr; in FunctionCloner()
996 NewReturnBlock = cast<BasicBlock>(VMap[RegionInfo.ReturnBlock]); in FunctionCloner()
1007 auto getFirstPHI = [](BasicBlock *BB) { in NormalizeReturnBlock()
1008 BasicBlock::iterator I = BB->begin(); in NormalizeReturnBlock()
1031 BasicBlock *PreReturn = ClonedOI->ReturnBlock; in NormalizeReturnBlock()
1049 BasicBlock::iterator I = PreReturn->begin(); in NormalizeReturnBlock()
1063 for (BasicBlock *E : ClonedOI->ReturnBlockPreds) { in NormalizeReturnBlock()
1088 auto ComputeRegionCost = [](SmallVectorImpl<BasicBlock *> &Region) { in doMultiRegionFunctionOutlining()
1090 for (BasicBlock* BB : Region) in doMultiRegionFunctionOutlining()
1137 BasicBlock *OutliningCallBB = OCS.getInstruction()->getParent(); in doMultiRegionFunctionOutlining()
1163 auto ToBeInlined = [&, this](BasicBlock *BB) { in doSingleRegionFunctionOutlining()
1180 std::vector<BasicBlock *> ToExtract; in doSingleRegionFunctionOutlining()
1184 for (BasicBlock &BB : *ClonedFunc) in doSingleRegionFunctionOutlining()
1202 BasicBlock *OutliningCallBB = in doSingleRegionFunctionOutlining()
1341 BasicBlock *Block; in tryPartialInline()