Lines Matching refs:BasicBlock

50 static bool isBlockValidForExtraction(const BasicBlock &BB) {  in isBlockValidForExtraction()
56 for (BasicBlock::const_iterator I = BB.begin(), E = BB.end(); I != E; ++I) { in isBlockValidForExtraction()
70 static SetVector<BasicBlock *> buildExtractionBlockSet(IteratorT BBBegin, in buildExtractionBlockSet()
72 SetVector<BasicBlock *> Result; in buildExtractionBlockSet()
89 for (SetVector<BasicBlock *>::iterator I = llvm::next(Result.begin()), in buildExtractionBlockSet()
103 static SetVector<BasicBlock *>
104 buildExtractionBlockSet(ArrayRef<BasicBlock *> BBs) { in buildExtractionBlockSet()
109 static SetVector<BasicBlock *>
113 return buildExtractionBlockSet(RN.getNodeAs<BasicBlock>()); in buildExtractionBlockSet()
120 CodeExtractor::CodeExtractor(BasicBlock *BB, bool AggregateArgs) in CodeExtractor()
124 CodeExtractor::CodeExtractor(ArrayRef<BasicBlock *> BBs, DominatorTree *DT, in CodeExtractor()
140 static bool definedInRegion(const SetVector<BasicBlock *> &Blocks, Value *V) { in definedInRegion()
150 static bool definedInCaller(const SetVector<BasicBlock *> &Blocks, Value *V) { in definedInCaller()
160 for (SetVector<BasicBlock *>::const_iterator I = Blocks.begin(), in findInputsOutputs()
163 BasicBlock *BB = *I; in findInputsOutputs()
167 for (BasicBlock::iterator II = BB->begin(), IE = BB->end(); in findInputsOutputs()
187 void CodeExtractor::severSplitPHINodes(BasicBlock *&Header) { in severSplitPHINodes()
213 BasicBlock::iterator AfterPHIs = Header->getFirstNonPHI(); in severSplitPHINodes()
214 BasicBlock *NewBB = Header->splitBasicBlock(AfterPHIs, in severSplitPHINodes()
219 BasicBlock *OldPred = Header; in severSplitPHINodes()
265 for (SetVector<BasicBlock *>::iterator I = Blocks.begin(), E = Blocks.end(); in splitReturnBlocks()
268 BasicBlock *New = (*I)->splitBasicBlock(RI, (*I)->getName()+".ret"); in splitReturnBlocks()
292 BasicBlock *header, in constructFunction()
293 BasicBlock *newRootNode, in constructFunction()
294 BasicBlock *newHeader, in constructFunction()
407 static BasicBlock* FindPhiPredForUseInBlock(Value* Used, BasicBlock* BB) { in FindPhiPredForUseInBlock()
422 emitCallAndSwitchStatement(Function *newFunction, BasicBlock *codeReplacer, in emitCallAndSwitchStatement()
523 std::map<BasicBlock*, BasicBlock*> ExitBlockMap; in emitCallAndSwitchStatement()
526 for (SetVector<BasicBlock*>::const_iterator i = Blocks.begin(), in emitCallAndSwitchStatement()
531 BasicBlock *OldTarget = TI->getSuccessor(i); in emitCallAndSwitchStatement()
533 BasicBlock *&NewTarget = ExitBlockMap[OldTarget]; in emitCallAndSwitchStatement()
537 NewTarget = BasicBlock::Create(Context, in emitCallAndSwitchStatement()
566 BasicBlock *DefBlock = cast<Instruction>(outputs[out])->getParent(); in emitCallAndSwitchStatement()
576 for (std::map<BasicBlock*, BasicBlock*>::iterator I = in emitCallAndSwitchStatement()
597 BasicBlock* pred = FindPhiPredForUseInBlock(Reloads[out], in emitCallAndSwitchStatement()
678 for (SetVector<BasicBlock*>::const_iterator i = Blocks.begin(), in moveCodeToFunction()
696 BasicBlock *header = *Blocks.begin(); in extractCodeRegion()
708 BasicBlock *codeReplacer = BasicBlock::Create(header->getContext(), in extractCodeRegion()
714 BasicBlock *newFuncRoot = BasicBlock::Create(header->getContext(), in extractCodeRegion()
721 SmallPtrSet<BasicBlock *, 1> ExitBlocks; in extractCodeRegion()
722 for (SetVector<BasicBlock *>::iterator I = Blocks.begin(), E = Blocks.end(); in extractCodeRegion()
741 for (BasicBlock::iterator I = header->begin(); isa<PHINode>(I); ++I) { in extractCodeRegion()
751 std::vector<BasicBlock*> Succs(succ_begin(codeReplacer), in extractCodeRegion()
754 for (BasicBlock::iterator I = Succs[i]->begin(); isa<PHINode>(I); ++I) { in extractCodeRegion()
756 std::set<BasicBlock*> ProcessedPreds; in extractCodeRegion()