Lines Matching refs:BasicBlock

61     ArrayRef<BasicBlock *> BBs,  in detachDeadBlocks()
67 SmallPtrSet<BasicBlock *, 4> UniqueSuccessors; in detachDeadBlocks()
68 for (BasicBlock *Succ : successors(BB)) { in detachDeadBlocks()
94 void llvm::DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU, in DeleteDeadBlock()
99 void llvm::DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs, DomTreeUpdater *DTU, in DeleteDeadBlocks()
103 SmallPtrSet<BasicBlock *, 4> Dead(BBs.begin(), BBs.end()); in DeleteDeadBlocks()
106 for (BasicBlock *Pred : predecessors(BB)) in DeleteDeadBlocks()
116 for (BasicBlock *BB : BBs) in DeleteDeadBlocks()
125 df_iterator_default_set<BasicBlock*> Reachable; in EliminateUnreachableBlocks()
128 for (BasicBlock *BB : depth_first_ext(&F, Reachable)) in EliminateUnreachableBlocks()
132 std::vector<BasicBlock*> DeadBlocks; in EliminateUnreachableBlocks()
133 for (BasicBlock &BB : F) in EliminateUnreachableBlocks()
143 bool llvm::FoldSingleEntryPHINodes(BasicBlock *BB, in FoldSingleEntryPHINodes()
162 bool llvm::DeleteDeadPHIs(BasicBlock *BB, const TargetLibraryInfo *TLI, in DeleteDeadPHIs()
178 bool llvm::MergeBlockIntoPredecessor(BasicBlock *BB, DomTreeUpdater *DTU, in MergeBlockIntoPredecessor()
186 BasicBlock *PredBB = BB->getUniquePredecessor(); in MergeBlockIntoPredecessor()
204 BasicBlock *NewSucc = nullptr; in MergeBlockIntoPredecessor()
239 SmallPtrSet<BasicBlock *, 8> SeenSuccs; in MergeBlockIntoPredecessor()
240 SmallPtrSet<BasicBlock *, 2> SuccsOfPredBB(succ_begin(PredBB), in MergeBlockIntoPredecessor()
249 for (BasicBlock *SuccOfBB : successors(BB)) in MergeBlockIntoPredecessor()
255 for (BasicBlock *SuccOfBB : successors(BB)) in MergeBlockIntoPredecessor()
321 SmallPtrSetImpl<BasicBlock *> &MergeBlocks, Loop *L, DomTreeUpdater *DTU, in MergeBlockSuccessorsIntoGivenBlocks()
327 BasicBlock *BB = *MergeBlocks.begin(); in MergeBlockSuccessorsIntoGivenBlocks()
328 BasicBlock *Dest = BB->getSingleSuccessor(); in MergeBlockSuccessorsIntoGivenBlocks()
330 BasicBlock *Fold = Dest->getUniquePredecessor(); in MergeBlockSuccessorsIntoGivenBlocks()
366 static bool removeRedundantDbgInstrsUsingBackwardScan(BasicBlock *BB) { in removeRedundantDbgInstrsUsingBackwardScan()
413 static bool removeRedundantDbgInstrsUsingForwardScan(BasicBlock *BB) { in removeRedundantDbgInstrsUsingForwardScan()
442 bool llvm::RemoveRedundantDbgInstrs(BasicBlock *BB) { in RemoveRedundantDbgInstrs()
464 void llvm::ReplaceInstWithValue(BasicBlock::InstListType &BIL, in ReplaceInstWithValue()
465 BasicBlock::iterator &BI, Value *V) { in ReplaceInstWithValue()
478 void llvm::ReplaceInstWithInst(BasicBlock::InstListType &BIL, in ReplaceInstWithInst()
479 BasicBlock::iterator &BI, Instruction *I) { in ReplaceInstWithInst()
489 BasicBlock::iterator New = BIL.insert(BI, I); in ReplaceInstWithInst()
498 bool llvm::IsBlockFollowedByDeoptOrUnreachable(const BasicBlock *BB) { in IsBlockFollowedByDeoptOrUnreachable()
500 SmallPtrSet<const BasicBlock *, 8> VisitedBlocks; in IsBlockFollowedByDeoptOrUnreachable()
513 BasicBlock::iterator BI(From); in ReplaceInstWithInst()
517 BasicBlock *llvm::SplitEdge(BasicBlock *BB, BasicBlock *Succ, DominatorTree *DT, in SplitEdge()
539 if (BasicBlock *SP = Succ->getSinglePredecessor()) { in SplitEdge()
555 void llvm::setUnwindEdgeTo(Instruction *TI, BasicBlock *Succ) { in setUnwindEdgeTo()
566 void llvm::updatePhiNodes(BasicBlock *DestBB, BasicBlock *OldPred, in updatePhiNodes()
567 BasicBlock *NewPred, PHINode *Until) { in updatePhiNodes()
588 BasicBlock *llvm::ehAwareSplitEdge(BasicBlock *BB, BasicBlock *Succ, in ehAwareSplitEdge()
599 SmallVector<BasicBlock *, 4> LoopPreds; in ehAwareSplitEdge()
615 for (BasicBlock *P : predecessors(Succ)) { in ehAwareSplitEdge()
628 if (any_of(LoopPreds, [](BasicBlock *Pred) { in ehAwareSplitEdge()
637 BasicBlock::Create(BB->getContext(), BBName, BB->getParent(), Succ); in ehAwareSplitEdge()
724 BasicBlock *NewExitBB = SplitBlockPredecessors( in ehAwareSplitEdge()
736 void llvm::createPHIsForSplitLoopExit(ArrayRef<BasicBlock *> Preds, in createPHIsForSplitLoopExit()
737 BasicBlock *SplitBB, BasicBlock *DestBB) { in createPHIsForSplitLoopExit()
759 for (BasicBlock *BB : Preds) in createPHIsForSplitLoopExit()
771 for (BasicBlock &BB : F) { in SplitAllCriticalEdges()
781 static BasicBlock *SplitBlockImpl(BasicBlock *Old, Instruction *SplitPt, in SplitBlockImpl()
791 BasicBlock::iterator SplitIt = SplitPt->getIterator(); in SplitBlockImpl()
797 BasicBlock *New = Old->splitBasicBlock( in SplitBlockImpl()
809 SmallPtrSet<BasicBlock *, 8> UniqueSuccessorsOfOld; in SplitBlockImpl()
812 for (BasicBlock *SuccessorOfOld : successors(New)) in SplitBlockImpl()
837 BasicBlock *llvm::SplitBlock(BasicBlock *Old, Instruction *SplitPt, in SplitBlock()
844 BasicBlock *llvm::SplitBlock(BasicBlock *Old, Instruction *SplitPt, in SplitBlock()
852 BasicBlock *llvm::splitBlockBefore(BasicBlock *Old, Instruction *SplitPt, in splitBlockBefore()
857 BasicBlock::iterator SplitIt = SplitPt->getIterator(); in splitBlockBefore()
861 BasicBlock *New = Old->splitBasicBlock( in splitBlockBefore()
875 SmallPtrSet<BasicBlock *, 8> UniquePredecessorsOfOld; in splitBlockBefore()
878 for (BasicBlock *PredecessorOfOld : predecessors(New)) in splitBlockBefore()
898 static void UpdateAnalysisInformation(BasicBlock *OldBB, BasicBlock *NewBB, in UpdateAnalysisInformation()
899 ArrayRef<BasicBlock *> Preds, in UpdateAnalysisInformation()
915 SmallPtrSet<BasicBlock *, 8> UniquePreds; in UpdateAnalysisInformation()
952 for (BasicBlock *Pred : Preds) { in UpdateAnalysisInformation()
986 for (BasicBlock *Pred : Preds) { in UpdateAnalysisInformation()
1012 static void UpdatePHINodes(BasicBlock *OrigBB, BasicBlock *NewBB, in UpdatePHINodes()
1013 ArrayRef<BasicBlock *> Preds, BranchInst *BI, in UpdatePHINodes()
1016 SmallPtrSet<BasicBlock *, 16> PredSet(Preds.begin(), Preds.end()); in UpdatePHINodes()
1017 for (BasicBlock::iterator I = OrigBB->begin(); isa<PHINode>(I); ) { in UpdatePHINodes()
1067 BasicBlock *IncomingBB = PN->getIncomingBlock(i); in UpdatePHINodes()
1079 BasicBlock *OrigBB, ArrayRef<BasicBlock *> Preds, const char *Suffix1,
1080 const char *Suffix2, SmallVectorImpl<BasicBlock *> &NewBBs,
1084 static BasicBlock *
1085 SplitBlockPredecessorsImpl(BasicBlock *BB, ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessorsImpl()
1096 SmallVector<BasicBlock*, 2> NewBBs; in SplitBlockPredecessorsImpl()
1105 BasicBlock *NewBB = BasicBlock::Create( in SplitBlockPredecessorsImpl()
1112 BasicBlock *OldLatch = nullptr; in SplitBlockPredecessorsImpl()
1144 for (BasicBlock::iterator I = BB->begin(); isa<PHINode>(I); ++I) in SplitBlockPredecessorsImpl()
1159 BasicBlock *NewLatch = L->getLoopLatch(); in SplitBlockPredecessorsImpl()
1174 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors()
1175 ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessors()
1182 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors()
1183 ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessors()
1193 BasicBlock *OrigBB, ArrayRef<BasicBlock *> Preds, const char *Suffix1, in SplitLandingPadPredecessorsImpl()
1194 const char *Suffix2, SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessorsImpl()
1201 BasicBlock *NewBB1 = BasicBlock::Create(OrigBB->getContext(), in SplitLandingPadPredecessorsImpl()
1228 SmallVector<BasicBlock*, 8> NewBB2Preds; in SplitLandingPadPredecessorsImpl()
1231 BasicBlock *Pred = *i++; in SplitLandingPadPredecessorsImpl()
1239 BasicBlock *NewBB2 = nullptr; in SplitLandingPadPredecessorsImpl()
1242 NewBB2 = BasicBlock::Create(OrigBB->getContext(), in SplitLandingPadPredecessorsImpl()
1252 for (BasicBlock *NewBB2Pred : NewBB2Preds) in SplitLandingPadPredecessorsImpl()
1294 void llvm::SplitLandingPadPredecessors(BasicBlock *OrigBB, in SplitLandingPadPredecessors()
1295 ArrayRef<BasicBlock *> Preds, in SplitLandingPadPredecessors()
1297 SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessors()
1305 void llvm::SplitLandingPadPredecessors(BasicBlock *OrigBB, in SplitLandingPadPredecessors()
1306 ArrayRef<BasicBlock *> Preds, in SplitLandingPadPredecessors()
1308 SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessors()
1317 ReturnInst *llvm::FoldReturnIntoUncondBranch(ReturnInst *RI, BasicBlock *BB, in FoldReturnIntoUncondBranch()
1318 BasicBlock *Pred, in FoldReturnIntoUncondBranch()
1379 LoopInfo *LI, BasicBlock *ThenBlock) { in SplitBlockAndInsertIfThenImpl()
1381 BasicBlock *Head = SplitBefore->getParent(); in SplitBlockAndInsertIfThenImpl()
1382 BasicBlock *Tail = Head->splitBasicBlock(SplitBefore->getIterator()); in SplitBlockAndInsertIfThenImpl()
1384 SmallPtrSet<BasicBlock *, 8> UniqueSuccessorsOfHead; in SplitBlockAndInsertIfThenImpl()
1387 for (BasicBlock *SuccessorOfHead : successors(Tail)) in SplitBlockAndInsertIfThenImpl()
1398 ThenBlock = BasicBlock::Create(C, "", Head->getParent(), Tail); in SplitBlockAndInsertIfThenImpl()
1449 BasicBlock *ThenBlock) { in SplitBlockAndInsertIfThen()
1459 BasicBlock *ThenBlock) { in SplitBlockAndInsertIfThen()
1469 BasicBlock *Head = SplitBefore->getParent(); in SplitBlockAndInsertIfThenElse()
1470 BasicBlock *Tail = Head->splitBasicBlock(SplitBefore->getIterator()); in SplitBlockAndInsertIfThenElse()
1473 BasicBlock *ThenBlock = BasicBlock::Create(C, "", Head->getParent(), Tail); in SplitBlockAndInsertIfThenElse()
1474 BasicBlock *ElseBlock = BasicBlock::Create(C, "", Head->getParent(), Tail); in SplitBlockAndInsertIfThenElse()
1485 BranchInst *llvm::GetIfCondition(BasicBlock *BB, BasicBlock *&IfTrue, in GetIfCondition()
1486 BasicBlock *&IfFalse) { in GetIfCondition()
1488 BasicBlock *Pred1 = nullptr; in GetIfCondition()
1489 BasicBlock *Pred2 = nullptr; in GetIfCondition()
1558 BasicBlock *CommonPred = Pred1->getSinglePredecessor(); in GetIfCondition()
1586 static void reconnectPhis(BasicBlock *Out, BasicBlock *GuardBlock, in reconnectPhis()
1587 const SetVector<BasicBlock *> &Incoming, in reconnectPhis()
1588 BasicBlock *FirstGuardBlock) { in reconnectPhis()
1615 using BBPredicates = DenseMap<BasicBlock *, PHINode *>;
1616 using BBSetVector = SetVector<BasicBlock *>;
1628 static std::tuple<Value *, BasicBlock *, BasicBlock *>
1629 redirectToHub(BasicBlock *BB, BasicBlock *FirstGuardBlock, in redirectToHub()
1634 BasicBlock *Succ0 = Branch->getSuccessor(0); in redirectToHub()
1635 BasicBlock *Succ1 = nullptr; in redirectToHub()
1671 BasicBlock *FirstGuardBlock, BBPredicates &GuardPredicates, in convertToGuardPredicates()
1691 BasicBlock *Succ0; in convertToGuardPredicates()
1692 BasicBlock *Succ1; in convertToGuardPredicates()
1740 static void createGuardBlocks(SmallVectorImpl<BasicBlock *> &GuardBlocks, in createGuardBlocks()
1745 BasicBlock::Create(F->getContext(), Prefix + ".guard", F)); in createGuardBlocks()
1764 BasicBlock *llvm::CreateControlFlowHub( in CreateControlFlowHub()
1765 DomTreeUpdater *DTU, SmallVectorImpl<BasicBlock *> &GuardBlocks, in CreateControlFlowHub()
1770 BasicBlock::Create(F->getContext(), Prefix + ".guard", F); in CreateControlFlowHub()