Lines Matching refs:BasicBlock
63 ArrayRef<BasicBlock *> BBs, in detachDeadBlocks()
69 SmallPtrSet<BasicBlock *, 4> UniqueSuccessors; in detachDeadBlocks()
70 for (BasicBlock *Succ : successors(BB)) { in detachDeadBlocks()
96 void llvm::DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU, in DeleteDeadBlock()
101 void llvm::DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs, DomTreeUpdater *DTU, in DeleteDeadBlocks()
105 SmallPtrSet<BasicBlock *, 4> Dead(BBs.begin(), BBs.end()); in DeleteDeadBlocks()
108 for (BasicBlock *Pred : predecessors(BB)) in DeleteDeadBlocks()
118 for (BasicBlock *BB : BBs) in DeleteDeadBlocks()
127 df_iterator_default_set<BasicBlock*> Reachable; in EliminateUnreachableBlocks()
130 for (BasicBlock *BB : depth_first_ext(&F, Reachable)) in EliminateUnreachableBlocks()
134 std::vector<BasicBlock*> DeadBlocks; in EliminateUnreachableBlocks()
135 for (BasicBlock &BB : F) in EliminateUnreachableBlocks()
145 bool llvm::FoldSingleEntryPHINodes(BasicBlock *BB, in FoldSingleEntryPHINodes()
164 bool llvm::DeleteDeadPHIs(BasicBlock *BB, const TargetLibraryInfo *TLI, in DeleteDeadPHIs()
180 bool llvm::MergeBlockIntoPredecessor(BasicBlock *BB, DomTreeUpdater *DTU, in MergeBlockIntoPredecessor()
189 BasicBlock *PredBB = BB->getUniquePredecessor(); in MergeBlockIntoPredecessor()
207 BasicBlock *NewSucc = nullptr; in MergeBlockIntoPredecessor()
253 SmallPtrSet<BasicBlock *, 8> SeenSuccs; in MergeBlockIntoPredecessor()
254 SmallPtrSet<BasicBlock *, 2> SuccsOfPredBB(succ_begin(PredBB), in MergeBlockIntoPredecessor()
263 for (BasicBlock *SuccOfBB : successors(BB)) in MergeBlockIntoPredecessor()
269 for (BasicBlock *SuccOfBB : successors(BB)) in MergeBlockIntoPredecessor()
340 SmallPtrSetImpl<BasicBlock *> &MergeBlocks, Loop *L, DomTreeUpdater *DTU, in MergeBlockSuccessorsIntoGivenBlocks()
346 BasicBlock *BB = *MergeBlocks.begin(); in MergeBlockSuccessorsIntoGivenBlocks()
347 BasicBlock *Dest = BB->getSingleSuccessor(); in MergeBlockSuccessorsIntoGivenBlocks()
349 BasicBlock *Fold = Dest->getUniquePredecessor(); in MergeBlockSuccessorsIntoGivenBlocks()
385 static bool DPValuesRemoveRedundantDbgInstrsUsingBackwardScan(BasicBlock *BB) { in DPValuesRemoveRedundantDbgInstrsUsingBackwardScan()
433 static bool removeRedundantDbgInstrsUsingBackwardScan(BasicBlock *BB) { in removeRedundantDbgInstrsUsingBackwardScan()
494 static bool DPValuesRemoveRedundantDbgInstrsUsingForwardScan(BasicBlock *BB) { in DPValuesRemoveRedundantDbgInstrsUsingForwardScan()
535 static bool DPValuesRemoveUndefDbgAssignsFromEntryBlock(BasicBlock *BB) { in DPValuesRemoveUndefDbgAssignsFromEntryBlock()
571 static bool removeRedundantDbgInstrsUsingForwardScan(BasicBlock *BB) { in removeRedundantDbgInstrsUsingForwardScan()
635 static bool removeUndefDbgAssignsFromEntryBlock(BasicBlock *BB) { in removeUndefDbgAssignsFromEntryBlock()
673 bool llvm::RemoveRedundantDbgInstrs(BasicBlock *BB) { in RemoveRedundantDbgInstrs()
698 void llvm::ReplaceInstWithValue(BasicBlock::iterator &BI, Value *V) { in ReplaceInstWithValue()
711 void llvm::ReplaceInstWithInst(BasicBlock *BB, BasicBlock::iterator &BI, in ReplaceInstWithInst()
722 BasicBlock::iterator New = I->insertInto(BB, BI); in ReplaceInstWithInst()
731 bool llvm::IsBlockFollowedByDeoptOrUnreachable(const BasicBlock *BB) { in IsBlockFollowedByDeoptOrUnreachable()
733 SmallPtrSet<const BasicBlock *, 8> VisitedBlocks; in IsBlockFollowedByDeoptOrUnreachable()
746 BasicBlock::iterator BI(From); in ReplaceInstWithInst()
750 BasicBlock *llvm::SplitEdge(BasicBlock *BB, BasicBlock *Succ, DominatorTree *DT, in SplitEdge()
772 if (BasicBlock *SP = Succ->getSinglePredecessor()) { in SplitEdge()
788 void llvm::setUnwindEdgeTo(Instruction *TI, BasicBlock *Succ) { in setUnwindEdgeTo()
799 void llvm::updatePhiNodes(BasicBlock *DestBB, BasicBlock *OldPred, in updatePhiNodes()
800 BasicBlock *NewPred, PHINode *Until) { in updatePhiNodes()
821 BasicBlock *llvm::ehAwareSplitEdge(BasicBlock *BB, BasicBlock *Succ, in ehAwareSplitEdge()
832 SmallVector<BasicBlock *, 4> LoopPreds; in ehAwareSplitEdge()
848 for (BasicBlock *P : predecessors(Succ)) { in ehAwareSplitEdge()
861 if (any_of(LoopPreds, [](BasicBlock *Pred) { in ehAwareSplitEdge()
870 BasicBlock::Create(BB->getContext(), BBName, BB->getParent(), Succ); in ehAwareSplitEdge()
957 BasicBlock *NewExitBB = SplitBlockPredecessors( in ehAwareSplitEdge()
969 void llvm::createPHIsForSplitLoopExit(ArrayRef<BasicBlock *> Preds, in createPHIsForSplitLoopExit()
970 BasicBlock *SplitBB, BasicBlock *DestBB) { in createPHIsForSplitLoopExit()
990 BasicBlock::iterator InsertPos = in createPHIsForSplitLoopExit()
994 for (BasicBlock *BB : Preds) in createPHIsForSplitLoopExit()
1006 for (BasicBlock &BB : F) { in SplitAllCriticalEdges()
1016 static BasicBlock *SplitBlockImpl(BasicBlock *Old, BasicBlock::iterator SplitPt, in SplitBlockImpl()
1026 BasicBlock::iterator SplitIt = SplitPt; in SplitBlockImpl()
1032 BasicBlock *New = Old->splitBasicBlock( in SplitBlockImpl()
1044 SmallPtrSet<BasicBlock *, 8> UniqueSuccessorsOfOld; in SplitBlockImpl()
1047 for (BasicBlock *SuccessorOfOld : successors(New)) in SplitBlockImpl()
1072 BasicBlock *llvm::SplitBlock(BasicBlock *Old, BasicBlock::iterator SplitPt, in SplitBlock()
1079 BasicBlock *llvm::SplitBlock(BasicBlock *Old, BasicBlock::iterator SplitPt, in SplitBlock()
1087 BasicBlock *llvm::splitBlockBefore(BasicBlock *Old, BasicBlock::iterator SplitPt, in splitBlockBefore()
1092 BasicBlock::iterator SplitIt = SplitPt; in splitBlockBefore()
1096 BasicBlock *New = Old->splitBasicBlock( in splitBlockBefore()
1110 SmallPtrSet<BasicBlock *, 8> UniquePredecessorsOfOld; in splitBlockBefore()
1113 for (BasicBlock *PredecessorOfOld : predecessors(New)) in splitBlockBefore()
1133 static void UpdateAnalysisInformation(BasicBlock *OldBB, BasicBlock *NewBB, in UpdateAnalysisInformation()
1134 ArrayRef<BasicBlock *> Preds, in UpdateAnalysisInformation()
1150 SmallPtrSet<BasicBlock *, 8> UniquePreds; in UpdateAnalysisInformation()
1187 for (BasicBlock *Pred : Preds) { in UpdateAnalysisInformation()
1221 for (BasicBlock *Pred : Preds) { in UpdateAnalysisInformation()
1247 static void UpdatePHINodes(BasicBlock *OrigBB, BasicBlock *NewBB, in UpdatePHINodes()
1248 ArrayRef<BasicBlock *> Preds, BranchInst *BI, in UpdatePHINodes()
1251 SmallPtrSet<BasicBlock *, 16> PredSet(Preds.begin(), Preds.end()); in UpdatePHINodes()
1252 for (BasicBlock::iterator I = OrigBB->begin(); isa<PHINode>(I); ) { in UpdatePHINodes()
1299 BasicBlock *IncomingBB = PN->getIncomingBlock(i); in UpdatePHINodes()
1311 BasicBlock *OrigBB, ArrayRef<BasicBlock *> Preds, const char *Suffix1,
1312 const char *Suffix2, SmallVectorImpl<BasicBlock *> &NewBBs,
1316 static BasicBlock *
1317 SplitBlockPredecessorsImpl(BasicBlock *BB, ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessorsImpl()
1328 SmallVector<BasicBlock*, 2> NewBBs; in SplitBlockPredecessorsImpl()
1337 BasicBlock *NewBB = BasicBlock::Create( in SplitBlockPredecessorsImpl()
1344 BasicBlock *OldLatch = nullptr; in SplitBlockPredecessorsImpl()
1361 for (BasicBlock *Pred : Preds) { in SplitBlockPredecessorsImpl()
1376 for (BasicBlock::iterator I = BB->begin(); isa<PHINode>(I); ++I) in SplitBlockPredecessorsImpl()
1391 BasicBlock *NewLatch = L->getLoopLatch(); in SplitBlockPredecessorsImpl()
1406 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors()
1407 ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessors()
1414 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors()
1415 ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessors()
1425 BasicBlock *OrigBB, ArrayRef<BasicBlock *> Preds, const char *Suffix1, in SplitLandingPadPredecessorsImpl()
1426 const char *Suffix2, SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessorsImpl()
1433 BasicBlock *NewBB1 = BasicBlock::Create(OrigBB->getContext(), in SplitLandingPadPredecessorsImpl()
1443 for (BasicBlock *Pred : Preds) { in SplitLandingPadPredecessorsImpl()
1460 SmallVector<BasicBlock*, 8> NewBB2Preds; in SplitLandingPadPredecessorsImpl()
1463 BasicBlock *Pred = *i++; in SplitLandingPadPredecessorsImpl()
1471 BasicBlock *NewBB2 = nullptr; in SplitLandingPadPredecessorsImpl()
1474 NewBB2 = BasicBlock::Create(OrigBB->getContext(), in SplitLandingPadPredecessorsImpl()
1484 for (BasicBlock *NewBB2Pred : NewBB2Preds) in SplitLandingPadPredecessorsImpl()
1526 void llvm::SplitLandingPadPredecessors(BasicBlock *OrigBB, in SplitLandingPadPredecessors()
1527 ArrayRef<BasicBlock *> Preds, in SplitLandingPadPredecessors()
1529 SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessors()
1538 ReturnInst *llvm::FoldReturnIntoUncondBranch(ReturnInst *RI, BasicBlock *BB, in FoldReturnIntoUncondBranch()
1539 BasicBlock *Pred, in FoldReturnIntoUncondBranch()
1597 BasicBlock::iterator SplitBefore, in SplitBlockAndInsertIfThen()
1601 BasicBlock *ThenBlock) { in SplitBlockAndInsertIfThen()
1610 BasicBlock::iterator SplitBefore, in SplitBlockAndInsertIfElse()
1614 BasicBlock *ElseBlock) { in SplitBlockAndInsertIfElse()
1622 void llvm::SplitBlockAndInsertIfThenElse(Value *Cond, BasicBlock::iterator SplitBefore, in SplitBlockAndInsertIfThenElse()
1627 BasicBlock *ThenBlock = nullptr; in SplitBlockAndInsertIfThenElse()
1628 BasicBlock *ElseBlock = nullptr; in SplitBlockAndInsertIfThenElse()
1638 Value *Cond, BasicBlock::iterator SplitBefore, BasicBlock **ThenBlock, in SplitBlockAndInsertIfThenElse()
1639 BasicBlock **ElseBlock, bool UnreachableThen, bool UnreachableElse, in SplitBlockAndInsertIfThenElse()
1647 SmallPtrSet<BasicBlock *, 8> UniqueOrigSuccessors; in SplitBlockAndInsertIfThenElse()
1648 BasicBlock *Head = SplitBefore->getParent(); in SplitBlockAndInsertIfThenElse()
1655 BasicBlock *Tail = Head->splitBasicBlock(SplitBefore); in SplitBlockAndInsertIfThenElse()
1656 BasicBlock *TrueBlock = Tail; in SplitBlockAndInsertIfThenElse()
1657 BasicBlock *FalseBlock = Tail; in SplitBlockAndInsertIfThenElse()
1662 auto handleBlock = [&](BasicBlock **PBB, bool Unreachable, BasicBlock *&BB, in SplitBlockAndInsertIfThenElse()
1671 BB = BasicBlock::Create(C, "", Head->getParent(), Tail); in SplitBlockAndInsertIfThenElse()
1700 for (BasicBlock *UniqueOrigSuccessor : UniqueOrigSuccessors) in SplitBlockAndInsertIfThenElse()
1702 for (BasicBlock *UniqueOrigSuccessor : UniqueOrigSuccessors) in SplitBlockAndInsertIfThenElse()
1720 BasicBlock *LoopPred = SplitBefore->getParent(); in SplitBlockAndInsertSimpleForLoop()
1721 BasicBlock *LoopBody = SplitBlock(SplitBefore->getParent(), SplitBefore); in SplitBlockAndInsertSimpleForLoop()
1722 BasicBlock *LoopExit = SplitBlock(SplitBefore->getParent(), SplitBefore); in SplitBlockAndInsertSimpleForLoop()
1790 BranchInst *llvm::GetIfCondition(BasicBlock *BB, BasicBlock *&IfTrue, in GetIfCondition()
1791 BasicBlock *&IfFalse) { in GetIfCondition()
1793 BasicBlock *Pred1 = nullptr; in GetIfCondition()
1794 BasicBlock *Pred2 = nullptr; in GetIfCondition()
1863 BasicBlock *CommonPred = Pred1->getSinglePredecessor(); in GetIfCondition()
1891 static void reconnectPhis(BasicBlock *Out, BasicBlock *GuardBlock, in reconnectPhis()
1892 const SetVector<BasicBlock *> &Incoming, in reconnectPhis()
1893 BasicBlock *FirstGuardBlock) { in reconnectPhis()
1920 using BBPredicates = DenseMap<BasicBlock *, Instruction *>;
1921 using BBSetVector = SetVector<BasicBlock *>;
1933 static std::tuple<Value *, BasicBlock *, BasicBlock *>
1934 redirectToHub(BasicBlock *BB, BasicBlock *FirstGuardBlock, in redirectToHub()
1941 BasicBlock *Succ0 = Branch->getSuccessor(0); in redirectToHub()
1942 BasicBlock *Succ1 = nullptr; in redirectToHub()
1973 static void setupBranchForGuard(SmallVectorImpl<BasicBlock *> &GuardBlocks, in setupBranchForGuard()
1995 SmallVectorImpl<BasicBlock *> &GuardBlocks, BBPredicates &GuardPredicates) { in calcPredicateUsingInteger()
2004 BasicBlock *Succ0; in calcPredicateUsingInteger()
2005 BasicBlock *Succ1; in calcPredicateUsingInteger()
2040 SmallVectorImpl<BasicBlock *> &GuardBlocks, BBPredicates &GuardPredicates, in calcPredicateUsingBooleans()
2061 BasicBlock *Succ0; in calcPredicateUsingBooleans()
2062 BasicBlock *Succ1; in calcPredicateUsingBooleans()
2108 convertToGuardPredicates(SmallVectorImpl<BasicBlock *> &GuardBlocks, in convertToGuardPredicates()
2118 BasicBlock::Create(F->getContext(), Prefix + ".guard", F)); in convertToGuardPredicates()
2134 BasicBlock *llvm::CreateControlFlowHub( in CreateControlFlowHub()
2135 DomTreeUpdater *DTU, SmallVectorImpl<BasicBlock *> &GuardBlocks, in CreateControlFlowHub()
2213 bool llvm::isPresplitCoroSuspendExitEdge(const BasicBlock &Src, in isPresplitCoroSuspendExitEdge()
2214 const BasicBlock &Dest) { in isPresplitCoroSuspendExitEdge()