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, BasicBlock *EntryBlock,
174 BasicBlock *ExitBlock, BasicBlock *ReturnBlock)
177 SmallVector<BasicBlock *, 8> Region;
178 BasicBlock *EntryBlock;
179 BasicBlock *ExitBlock;
180 BasicBlock *ReturnBlock;
244 typedef std::pair<Function *, BasicBlock *> FuncBodyCallerPair;
313 std::tuple<DebugLoc, BasicBlock *> getOneDebugLoc(Function &F) const {
316 BasicBlock *Block = CB->getParent();
332 static InstructionCost computeBBInlineCost(BasicBlock *BB,
348 BasicBlock *EntryBlock = &F.front();
369 [&ORE](SmallVectorImpl<BasicBlock *> &BlockList) -> BasicBlock * {
370 BasicBlock *ExitBlock = nullptr;
372 for (BasicBlock *Succ : successors(Block)) {
392 auto BBProfileCount = [BFI](BasicBlock *BB) {
413 BasicBlock *CurrEntry = EntryBlock;
414 std::vector<BasicBlock *> DFS;
415 DenseMap<BasicBlock *, bool> VisitedMap;
448 SmallVector<BasicBlock *, 8> DominateVector;
461 BasicBlock *ExitBlock = nullptr;
498 BasicBlock *ReturnBlock = ExitBlock->getSingleSuccessor();
517 BasicBlock *EntryBlock = &F.front();
523 auto IsSuccessor = [](BasicBlock *Succ, BasicBlock *BB) {
527 auto IsReturnBlock = [](BasicBlock *BB) {
532 auto GetReturnBlock = [&](BasicBlock *Succ1, BasicBlock *Succ2) {
538 return std::make_tuple<BasicBlock *, BasicBlock *>(nullptr, nullptr);
542 auto GetCommonSucc = [&](BasicBlock *Succ1, BasicBlock *Succ2) {
548 return std::make_tuple<BasicBlock *, BasicBlock *>(nullptr, nullptr);
554 BasicBlock *CurrEntry = EntryBlock;
566 BasicBlock *Succ1 = *succ_begin(CurrEntry);
567 BasicBlock *Succ2 = *(succ_begin(CurrEntry) + 1);
569 BasicBlock *ReturnBlock, *NonReturnBlock;
580 BasicBlock *CommSucc, *OtherSucc;
597 DenseSet<BasicBlock *> Entries;
598 for (BasicBlock *E : OutliningInfo->Entries)
603 auto HasNonEntryPred = [Entries](BasicBlock *BB) {
612 for (BasicBlock *E : OutliningInfo->Entries) {
634 BasicBlock *Cand = OutliningInfo->NonReturnBlock;
641 BasicBlock *Succ1 = *succ_begin(Cand);
642 BasicBlock *Succ2 = *(succ_begin(Cand) + 1);
644 BasicBlock *ReturnBlock, *NonReturnBlock;
679 BasicBlock *OutliningCallBB = Cloner.OutlinedFunctions.back().second;
803 PartialInlinerImpl::computeBBInlineCost(BasicBlock *BB,
868 BasicBlock* OutliningCallBB = FuncBBPair.second;
876 for (BasicBlock &BB : *OutlinedFunc)
934 BasicBlock *CallBB = CB->getParent();
954 ClonedOI->ReturnBlock = cast<BasicBlock>(VMap[OI->ReturnBlock]);
955 ClonedOI->NonReturnBlock = cast<BasicBlock>(VMap[OI->NonReturnBlock]);
956 for (BasicBlock *BB : OI->Entries)
957 ClonedOI->Entries.push_back(cast<BasicBlock>(VMap[BB]));
959 for (BasicBlock *E : OI->ReturnBlockPreds) {
960 BasicBlock *NewE = cast<BasicBlock>(VMap[E]);
980 // Go through all Outline Candidate Regions and update all BasicBlock
984 SmallVector<BasicBlock *, 8> Region;
985 for (BasicBlock *BB : RegionInfo.Region)
986 Region.push_back(cast<BasicBlock>(VMap[BB]));
988 BasicBlock *NewEntryBlock = cast<BasicBlock>(VMap[RegionInfo.EntryBlock]);
989 BasicBlock *NewExitBlock = cast<BasicBlock>(VMap[RegionInfo.ExitBlock]);
990 BasicBlock *NewReturnBlock = nullptr;
992 NewReturnBlock = cast<BasicBlock>(VMap[RegionInfo.ReturnBlock]);
1003 auto GetFirstPHI = [](BasicBlock *BB) {
1004 BasicBlock::iterator I = BB->begin();
1027 BasicBlock *PreReturn = ClonedOI->ReturnBlock;
1043 BasicBlock::iterator I = PreReturn->begin();
1044 BasicBlock::iterator Ins = ClonedOI->ReturnBlock->begin();
1058 for (BasicBlock *E : ClonedOI->ReturnBlockPreds) {
1083 [&](SmallVectorImpl<BasicBlock *> &Region) -> InstructionCost {
1085 for (BasicBlock* BB : Region)
1135 BasicBlock *OutliningCallBB = OCS->getParent();
1161 auto ToBeInlined = [&, this](BasicBlock *BB) {
1177 std::vector<BasicBlock *> ToExtract;
1182 for (BasicBlock *BB : depth_first(&ClonedFunc->getEntryBlock()))
1201 BasicBlock *OutliningCallBB =
1336 BasicBlock *Block;