Lines Matching refs:BasicBlock

56     ArrayRef<BasicBlock *> BBs,  in DetatchDeadBlocks()
62 SmallPtrSet<BasicBlock *, 4> UniqueSuccessors; in DetatchDeadBlocks()
63 for (BasicBlock *Succ : successors(BB)) { in DetatchDeadBlocks()
89 void llvm::DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU, in DeleteDeadBlock()
94 void llvm::DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs, DomTreeUpdater *DTU, in DeleteDeadBlocks()
98 SmallPtrSet<BasicBlock *, 4> Dead(BBs.begin(), BBs.end()); in DeleteDeadBlocks()
101 for (BasicBlock *Pred : predecessors(BB)) in DeleteDeadBlocks()
111 for (BasicBlock *BB : BBs) in DeleteDeadBlocks()
120 df_iterator_default_set<BasicBlock*> Reachable; in EliminateUnreachableBlocks()
123 for (BasicBlock *BB : depth_first_ext(&F, Reachable)) in EliminateUnreachableBlocks()
127 std::vector<BasicBlock*> DeadBlocks; in EliminateUnreachableBlocks()
128 for (BasicBlock &BB : F) in EliminateUnreachableBlocks()
138 bool llvm::FoldSingleEntryPHINodes(BasicBlock *BB, in FoldSingleEntryPHINodes()
157 bool llvm::DeleteDeadPHIs(BasicBlock *BB, const TargetLibraryInfo *TLI, in DeleteDeadPHIs()
173 bool llvm::MergeBlockIntoPredecessor(BasicBlock *BB, DomTreeUpdater *DTU, in MergeBlockIntoPredecessor()
181 BasicBlock *PredBB = BB->getUniquePredecessor(); in MergeBlockIntoPredecessor()
197 BasicBlock *NewSucc = nullptr; in MergeBlockIntoPredecessor()
231 SmallPtrSet<BasicBlock *, 2> SuccsOfBB(succ_begin(BB), succ_end(BB)); in MergeBlockIntoPredecessor()
232 SmallPtrSet<BasicBlock *, 2> SuccsOfPredBB(succ_begin(PredBB), in MergeBlockIntoPredecessor()
241 for (BasicBlock *SuccOfBB : SuccsOfBB) in MergeBlockIntoPredecessor()
245 for (BasicBlock *SuccOfBB : SuccsOfBB) in MergeBlockIntoPredecessor()
311 SmallPtrSetImpl<BasicBlock *> &MergeBlocks, Loop *L, DomTreeUpdater *DTU, in MergeBlockSuccessorsIntoGivenBlocks()
317 BasicBlock *BB = *MergeBlocks.begin(); in MergeBlockSuccessorsIntoGivenBlocks()
318 BasicBlock *Dest = BB->getSingleSuccessor(); in MergeBlockSuccessorsIntoGivenBlocks()
320 BasicBlock *Fold = Dest->getUniquePredecessor(); in MergeBlockSuccessorsIntoGivenBlocks()
356 static bool removeRedundantDbgInstrsUsingBackwardScan(BasicBlock *BB) { in removeRedundantDbgInstrsUsingBackwardScan()
403 static bool removeRedundantDbgInstrsUsingForwardScan(BasicBlock *BB) { in removeRedundantDbgInstrsUsingForwardScan()
432 bool llvm::RemoveRedundantDbgInstrs(BasicBlock *BB) { in RemoveRedundantDbgInstrs()
454 void llvm::ReplaceInstWithValue(BasicBlock::InstListType &BIL, in ReplaceInstWithValue()
455 BasicBlock::iterator &BI, Value *V) { in ReplaceInstWithValue()
468 void llvm::ReplaceInstWithInst(BasicBlock::InstListType &BIL, in ReplaceInstWithInst()
469 BasicBlock::iterator &BI, Instruction *I) { in ReplaceInstWithInst()
479 BasicBlock::iterator New = BIL.insert(BI, I); in ReplaceInstWithInst()
489 BasicBlock::iterator BI(From); in ReplaceInstWithInst()
493 BasicBlock *llvm::SplitEdge(BasicBlock *BB, BasicBlock *Succ, DominatorTree *DT, in SplitEdge()
515 if (BasicBlock *SP = Succ->getSinglePredecessor()) { in SplitEdge()
531 void llvm::setUnwindEdgeTo(Instruction *TI, BasicBlock *Succ) { in setUnwindEdgeTo()
542 void llvm::updatePhiNodes(BasicBlock *DestBB, BasicBlock *OldPred, in updatePhiNodes()
543 BasicBlock *NewPred, PHINode *Until) { in updatePhiNodes()
564 BasicBlock *llvm::ehAwareSplitEdge(BasicBlock *BB, BasicBlock *Succ, in ehAwareSplitEdge()
575 SmallVector<BasicBlock *, 4> LoopPreds; in ehAwareSplitEdge()
591 for (BasicBlock *P : predecessors(Succ)) { in ehAwareSplitEdge()
604 if (any_of(LoopPreds, [](BasicBlock *Pred) { in ehAwareSplitEdge()
613 BasicBlock::Create(BB->getContext(), BBName, BB->getParent(), Succ); in ehAwareSplitEdge()
700 BasicBlock *NewExitBB = SplitBlockPredecessors( in ehAwareSplitEdge()
712 void llvm::createPHIsForSplitLoopExit(ArrayRef<BasicBlock *> Preds, in createPHIsForSplitLoopExit()
713 BasicBlock *SplitBB, BasicBlock *DestBB) { in createPHIsForSplitLoopExit()
735 for (BasicBlock *BB : Preds) in createPHIsForSplitLoopExit()
747 for (BasicBlock &BB : F) { in SplitAllCriticalEdges()
758 static BasicBlock *SplitBlockImpl(BasicBlock *Old, Instruction *SplitPt, in SplitBlockImpl()
768 BasicBlock::iterator SplitIt = SplitPt->getIterator(); in SplitBlockImpl()
774 BasicBlock *New = Old->splitBasicBlock( in SplitBlockImpl()
786 SmallPtrSet<BasicBlock *, 8> UniqueSuccessorsOfOld(succ_begin(New), in SplitBlockImpl()
790 for (BasicBlock *UniqueSuccessorOfOld : UniqueSuccessorsOfOld) { in SplitBlockImpl()
814 BasicBlock *llvm::SplitBlock(BasicBlock *Old, Instruction *SplitPt, in SplitBlock()
821 BasicBlock *llvm::SplitBlock(BasicBlock *Old, Instruction *SplitPt, in SplitBlock()
829 BasicBlock *llvm::splitBlockBefore(BasicBlock *Old, Instruction *SplitPt, in splitBlockBefore()
834 BasicBlock::iterator SplitIt = SplitPt->getIterator(); in splitBlockBefore()
838 BasicBlock *New = Old->splitBasicBlock( in splitBlockBefore()
852 SmallPtrSet<BasicBlock *, 8> UniquePredecessorsOfOld(pred_begin(New), in splitBlockBefore()
856 for (BasicBlock *UniquePredecessorOfOld : UniquePredecessorsOfOld) { in splitBlockBefore()
875 static void UpdateAnalysisInformation(BasicBlock *OldBB, BasicBlock *NewBB, in UpdateAnalysisInformation()
876 ArrayRef<BasicBlock *> Preds, in UpdateAnalysisInformation()
892 SmallPtrSet<BasicBlock *, 8> UniquePreds(Preds.begin(), Preds.end()); in UpdateAnalysisInformation()
928 for (BasicBlock *Pred : Preds) { in UpdateAnalysisInformation()
962 for (BasicBlock *Pred : Preds) { in UpdateAnalysisInformation()
988 static void UpdatePHINodes(BasicBlock *OrigBB, BasicBlock *NewBB, in UpdatePHINodes()
989 ArrayRef<BasicBlock *> Preds, BranchInst *BI, in UpdatePHINodes()
992 SmallPtrSet<BasicBlock *, 16> PredSet(Preds.begin(), Preds.end()); in UpdatePHINodes()
993 for (BasicBlock::iterator I = OrigBB->begin(); isa<PHINode>(I); ) { in UpdatePHINodes()
1043 BasicBlock *IncomingBB = PN->getIncomingBlock(i); in UpdatePHINodes()
1055 BasicBlock *OrigBB, ArrayRef<BasicBlock *> Preds, const char *Suffix1,
1056 const char *Suffix2, SmallVectorImpl<BasicBlock *> &NewBBs,
1060 static BasicBlock *
1061 SplitBlockPredecessorsImpl(BasicBlock *BB, ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessorsImpl()
1072 SmallVector<BasicBlock*, 2> NewBBs; in SplitBlockPredecessorsImpl()
1081 BasicBlock *NewBB = BasicBlock::Create( in SplitBlockPredecessorsImpl()
1088 BasicBlock *OldLatch = nullptr; in SplitBlockPredecessorsImpl()
1122 for (BasicBlock::iterator I = BB->begin(); isa<PHINode>(I); ++I) in SplitBlockPredecessorsImpl()
1137 BasicBlock *NewLatch = L->getLoopLatch(); in SplitBlockPredecessorsImpl()
1148 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors()
1149 ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessors()
1156 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors()
1157 ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessors()
1167 BasicBlock *OrigBB, ArrayRef<BasicBlock *> Preds, const char *Suffix1, in SplitLandingPadPredecessorsImpl()
1168 const char *Suffix2, SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessorsImpl()
1175 BasicBlock *NewBB1 = BasicBlock::Create(OrigBB->getContext(), in SplitLandingPadPredecessorsImpl()
1202 SmallVector<BasicBlock*, 8> NewBB2Preds; in SplitLandingPadPredecessorsImpl()
1205 BasicBlock *Pred = *i++; in SplitLandingPadPredecessorsImpl()
1213 BasicBlock *NewBB2 = nullptr; in SplitLandingPadPredecessorsImpl()
1216 NewBB2 = BasicBlock::Create(OrigBB->getContext(), in SplitLandingPadPredecessorsImpl()
1226 for (BasicBlock *NewBB2Pred : NewBB2Preds) in SplitLandingPadPredecessorsImpl()
1268 void llvm::SplitLandingPadPredecessors(BasicBlock *OrigBB, in SplitLandingPadPredecessors()
1269 ArrayRef<BasicBlock *> Preds, in SplitLandingPadPredecessors()
1271 SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessors()
1279 void llvm::SplitLandingPadPredecessors(BasicBlock *OrigBB, in SplitLandingPadPredecessors()
1280 ArrayRef<BasicBlock *> Preds, in SplitLandingPadPredecessors()
1282 SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessors()
1291 ReturnInst *llvm::FoldReturnIntoUncondBranch(ReturnInst *RI, BasicBlock *BB, in FoldReturnIntoUncondBranch()
1292 BasicBlock *Pred, in FoldReturnIntoUncondBranch()
1353 LoopInfo *LI, BasicBlock *ThenBlock) { in SplitBlockAndInsertIfThenImpl()
1355 BasicBlock *Head = SplitBefore->getParent(); in SplitBlockAndInsertIfThenImpl()
1356 BasicBlock *Tail = Head->splitBasicBlock(SplitBefore->getIterator()); in SplitBlockAndInsertIfThenImpl()
1358 SmallPtrSet<BasicBlock *, 8> UniqueSuccessorsOfHead(succ_begin(Tail), in SplitBlockAndInsertIfThenImpl()
1362 for (BasicBlock *UniqueSuccessorOfHead : UniqueSuccessorsOfHead) { in SplitBlockAndInsertIfThenImpl()
1372 ThenBlock = BasicBlock::Create(C, "", Head->getParent(), Tail); in SplitBlockAndInsertIfThenImpl()
1423 BasicBlock *ThenBlock) { in SplitBlockAndInsertIfThen()
1433 BasicBlock *ThenBlock) { in SplitBlockAndInsertIfThen()
1443 BasicBlock *Head = SplitBefore->getParent(); in SplitBlockAndInsertIfThenElse()
1444 BasicBlock *Tail = Head->splitBasicBlock(SplitBefore->getIterator()); in SplitBlockAndInsertIfThenElse()
1447 BasicBlock *ThenBlock = BasicBlock::Create(C, "", Head->getParent(), Tail); in SplitBlockAndInsertIfThenElse()
1448 BasicBlock *ElseBlock = BasicBlock::Create(C, "", Head->getParent(), Tail); in SplitBlockAndInsertIfThenElse()
1459 BranchInst *llvm::GetIfCondition(BasicBlock *BB, BasicBlock *&IfTrue, in GetIfCondition()
1460 BasicBlock *&IfFalse) { in GetIfCondition()
1462 BasicBlock *Pred1 = nullptr; in GetIfCondition()
1463 BasicBlock *Pred2 = nullptr; in GetIfCondition()
1532 BasicBlock *CommonPred = Pred1->getSinglePredecessor(); in GetIfCondition()
1560 static void reconnectPhis(BasicBlock *Out, BasicBlock *GuardBlock, in reconnectPhis()
1561 const SetVector<BasicBlock *> &Incoming, in reconnectPhis()
1562 BasicBlock *FirstGuardBlock) { in reconnectPhis()
1589 using BBPredicates = DenseMap<BasicBlock *, PHINode *>;
1590 using BBSetVector = SetVector<BasicBlock *>;
1602 static std::tuple<Value *, BasicBlock *, BasicBlock *>
1603 redirectToHub(BasicBlock *BB, BasicBlock *FirstGuardBlock, in redirectToHub()
1608 BasicBlock *Succ0 = Branch->getSuccessor(0); in redirectToHub()
1609 BasicBlock *Succ1 = nullptr; in redirectToHub()
1645 BasicBlock *FirstGuardBlock, BBPredicates &GuardPredicates, in convertToGuardPredicates()
1665 BasicBlock *Succ0; in convertToGuardPredicates()
1666 BasicBlock *Succ1; in convertToGuardPredicates()
1714 static void createGuardBlocks(SmallVectorImpl<BasicBlock *> &GuardBlocks, in createGuardBlocks()
1719 BasicBlock::Create(F->getContext(), Prefix + ".guard", F)); in createGuardBlocks()
1738 BasicBlock *llvm::CreateControlFlowHub( in CreateControlFlowHub()
1739 DomTreeUpdater *DTU, SmallVectorImpl<BasicBlock *> &GuardBlocks, in CreateControlFlowHub()
1744 BasicBlock::Create(F->getContext(), Prefix + ".guard", F); in CreateControlFlowHub()