Lines Matching refs:BasicBlock

30 #include "llvm/IR/BasicBlock.h"
156 SmallVector<BasicBlock *, 4> Entries;
159 BasicBlock *ReturnBlock = nullptr;
162 BasicBlock *NonReturnBlock = nullptr;
165 SmallVector<BasicBlock *, 4> ReturnBlockPreds;
173 OutlineRegionInfo(ArrayRef<BasicBlock *> Region,
174 BasicBlock *EntryBlock, BasicBlock *ExitBlock,
175 BasicBlock *ReturnBlock)
178 SmallVector<BasicBlock *, 8> Region;
179 BasicBlock *EntryBlock;
180 BasicBlock *ExitBlock;
181 BasicBlock *ReturnBlock;
245 typedef std::pair<Function *, BasicBlock *> FuncBodyCallerPair;
314 std::tuple<DebugLoc, BasicBlock *> getOneDebugLoc(Function &F) const {
317 BasicBlock *Block = CB->getParent();
333 static InstructionCost computeBBInlineCost(BasicBlock *BB,
349 BasicBlock *EntryBlock = &F.front();
370 [&ORE](SmallVectorImpl<BasicBlock *> &BlockList) -> BasicBlock * {
371 BasicBlock *ExitBlock = nullptr;
373 for (BasicBlock *Succ : successors(Block)) {
393 auto BBProfileCount = [BFI](BasicBlock *BB) {
414 BasicBlock *CurrEntry = EntryBlock;
415 std::vector<BasicBlock *> DFS;
416 DenseMap<BasicBlock *, bool> VisitedMap;
449 SmallVector<BasicBlock *, 8> DominateVector;
462 BasicBlock *ExitBlock = nullptr;
499 BasicBlock *ReturnBlock = ExitBlock->getSingleSuccessor();
518 BasicBlock *EntryBlock = &F.front();
524 auto IsSuccessor = [](BasicBlock *Succ, BasicBlock *BB) {
528 auto IsReturnBlock = [](BasicBlock *BB) {
533 auto GetReturnBlock = [&](BasicBlock *Succ1, BasicBlock *Succ2) {
539 return std::make_tuple<BasicBlock *, BasicBlock *>(nullptr, nullptr);
543 auto GetCommonSucc = [&](BasicBlock *Succ1, BasicBlock *Succ2) {
549 return std::make_tuple<BasicBlock *, BasicBlock *>(nullptr, nullptr);
555 BasicBlock *CurrEntry = EntryBlock;
567 BasicBlock *Succ1 = *succ_begin(CurrEntry);
568 BasicBlock *Succ2 = *(succ_begin(CurrEntry) + 1);
570 BasicBlock *ReturnBlock, *NonReturnBlock;
581 BasicBlock *CommSucc, *OtherSucc;
598 DenseSet<BasicBlock *> Entries;
599 for (BasicBlock *E : OutliningInfo->Entries)
604 auto HasNonEntryPred = [Entries](BasicBlock *BB) {
613 for (BasicBlock *E : OutliningInfo->Entries) {
635 BasicBlock *Cand = OutliningInfo->NonReturnBlock;
642 BasicBlock *Succ1 = *succ_begin(Cand);
643 BasicBlock *Succ2 = *(succ_begin(Cand) + 1);
645 BasicBlock *ReturnBlock, *NonReturnBlock;
680 BasicBlock *OutliningCallBB = Cloner.OutlinedFunctions.back().second;
804 PartialInlinerImpl::computeBBInlineCost(BasicBlock *BB,
869 BasicBlock* OutliningCallBB = FuncBBPair.second;
877 for (BasicBlock &BB : *OutlinedFunc)
935 BasicBlock *CallBB = CB->getParent();
955 ClonedOI->ReturnBlock = cast<BasicBlock>(VMap[OI->ReturnBlock]);
956 ClonedOI->NonReturnBlock = cast<BasicBlock>(VMap[OI->NonReturnBlock]);
957 for (BasicBlock *BB : OI->Entries)
958 ClonedOI->Entries.push_back(cast<BasicBlock>(VMap[BB]));
960 for (BasicBlock *E : OI->ReturnBlockPreds) {
961 BasicBlock *NewE = cast<BasicBlock>(VMap[E]);
981 // Go through all Outline Candidate Regions and update all BasicBlock
985 SmallVector<BasicBlock *, 8> Region;
986 for (BasicBlock *BB : RegionInfo.Region)
987 Region.push_back(cast<BasicBlock>(VMap[BB]));
989 BasicBlock *NewEntryBlock = cast<BasicBlock>(VMap[RegionInfo.EntryBlock]);
990 BasicBlock *NewExitBlock = cast<BasicBlock>(VMap[RegionInfo.ExitBlock]);
991 BasicBlock *NewReturnBlock = nullptr;
993 NewReturnBlock = cast<BasicBlock>(VMap[RegionInfo.ReturnBlock]);
1004 auto GetFirstPHI = [](BasicBlock *BB) {
1005 BasicBlock::iterator I = BB->begin();
1028 BasicBlock *PreReturn = ClonedOI->ReturnBlock;
1044 BasicBlock::iterator I = PreReturn->begin();
1045 BasicBlock::iterator Ins = ClonedOI->ReturnBlock->begin();
1059 for (BasicBlock *E : ClonedOI->ReturnBlockPreds) {
1084 [&](SmallVectorImpl<BasicBlock *> &Region) -> InstructionCost {
1086 for (BasicBlock* BB : Region)
1136 BasicBlock *OutliningCallBB = OCS->getParent();
1162 auto ToBeInlined = [&, this](BasicBlock *BB) {
1178 std::vector<BasicBlock *> ToExtract;
1183 for (BasicBlock *BB : depth_first(&ClonedFunc->getEntryBlock()))
1202 BasicBlock *OutliningCallBB =
1337 BasicBlock *Block;