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()
386 DbgVariableRecordsRemoveRedundantDbgInstrsUsingBackwardScan(BasicBlock *BB) { in DbgVariableRecordsRemoveRedundantDbgInstrsUsingBackwardScan()
442 static bool removeRedundantDbgInstrsUsingBackwardScan(BasicBlock *BB) { in removeRedundantDbgInstrsUsingBackwardScan()
504 DbgVariableRecordsRemoveRedundantDbgInstrsUsingForwardScan(BasicBlock *BB) { in DbgVariableRecordsRemoveRedundantDbgInstrsUsingForwardScan()
546 DbgVariableRecordsRemoveUndefDbgAssignsFromEntryBlock(BasicBlock *BB) { in DbgVariableRecordsRemoveUndefDbgAssignsFromEntryBlock()
582 static bool removeRedundantDbgInstrsUsingForwardScan(BasicBlock *BB) { in removeRedundantDbgInstrsUsingForwardScan()
646 static bool removeUndefDbgAssignsFromEntryBlock(BasicBlock *BB) { in removeUndefDbgAssignsFromEntryBlock()
684 bool llvm::RemoveRedundantDbgInstrs(BasicBlock *BB) { in RemoveRedundantDbgInstrs()
709 void llvm::ReplaceInstWithValue(BasicBlock::iterator &BI, Value *V) { in ReplaceInstWithValue()
722 void llvm::ReplaceInstWithInst(BasicBlock *BB, BasicBlock::iterator &BI, in ReplaceInstWithInst()
733 BasicBlock::iterator New = I->insertInto(BB, BI); in ReplaceInstWithInst()
742 bool llvm::IsBlockFollowedByDeoptOrUnreachable(const BasicBlock *BB) { in IsBlockFollowedByDeoptOrUnreachable()
744 SmallPtrSet<const BasicBlock *, 8> VisitedBlocks; in IsBlockFollowedByDeoptOrUnreachable()
757 BasicBlock::iterator BI(From); in ReplaceInstWithInst()
761 BasicBlock *llvm::SplitEdge(BasicBlock *BB, BasicBlock *Succ, DominatorTree *DT, in SplitEdge()
783 if (BasicBlock *SP = Succ->getSinglePredecessor()) { in SplitEdge()
799 void llvm::setUnwindEdgeTo(Instruction *TI, BasicBlock *Succ) { in setUnwindEdgeTo()
810 void llvm::updatePhiNodes(BasicBlock *DestBB, BasicBlock *OldPred, in updatePhiNodes()
811 BasicBlock *NewPred, PHINode *Until) { in updatePhiNodes()
832 BasicBlock *llvm::ehAwareSplitEdge(BasicBlock *BB, BasicBlock *Succ, in ehAwareSplitEdge()
843 SmallVector<BasicBlock *, 4> LoopPreds; in ehAwareSplitEdge()
859 for (BasicBlock *P : predecessors(Succ)) { in ehAwareSplitEdge()
872 if (any_of(LoopPreds, [](BasicBlock *Pred) { in ehAwareSplitEdge()
881 BasicBlock::Create(BB->getContext(), BBName, BB->getParent(), Succ); in ehAwareSplitEdge()
968 BasicBlock *NewExitBB = SplitBlockPredecessors( in ehAwareSplitEdge()
980 void llvm::createPHIsForSplitLoopExit(ArrayRef<BasicBlock *> Preds, in createPHIsForSplitLoopExit()
981 BasicBlock *SplitBB, BasicBlock *DestBB) { in createPHIsForSplitLoopExit()
1001 BasicBlock::iterator InsertPos = in createPHIsForSplitLoopExit()
1005 for (BasicBlock *BB : Preds) in createPHIsForSplitLoopExit()
1017 for (BasicBlock &BB : F) { in SplitAllCriticalEdges()
1027 static BasicBlock *SplitBlockImpl(BasicBlock *Old, BasicBlock::iterator SplitPt, in SplitBlockImpl()
1037 BasicBlock::iterator SplitIt = SplitPt; in SplitBlockImpl()
1043 BasicBlock *New = Old->splitBasicBlock( in SplitBlockImpl()
1055 SmallPtrSet<BasicBlock *, 8> UniqueSuccessorsOfOld; in SplitBlockImpl()
1058 for (BasicBlock *SuccessorOfOld : successors(New)) in SplitBlockImpl()
1083 BasicBlock *llvm::SplitBlock(BasicBlock *Old, BasicBlock::iterator SplitPt, in SplitBlock()
1090 BasicBlock *llvm::SplitBlock(BasicBlock *Old, BasicBlock::iterator SplitPt, in SplitBlock()
1098 BasicBlock *llvm::splitBlockBefore(BasicBlock *Old, BasicBlock::iterator SplitPt, in splitBlockBefore()
1103 BasicBlock::iterator SplitIt = SplitPt; in splitBlockBefore()
1107 BasicBlock *New = Old->splitBasicBlock( in splitBlockBefore()
1121 SmallPtrSet<BasicBlock *, 8> UniquePredecessorsOfOld; in splitBlockBefore()
1124 for (BasicBlock *PredecessorOfOld : predecessors(New)) in splitBlockBefore()
1145 static void UpdateAnalysisInformation(BasicBlock *OldBB, BasicBlock *NewBB, in UpdateAnalysisInformation()
1146 ArrayRef<BasicBlock *> Preds, in UpdateAnalysisInformation()
1162 SmallPtrSet<BasicBlock *, 8> UniquePreds; in UpdateAnalysisInformation()
1199 for (BasicBlock *Pred : Preds) { in UpdateAnalysisInformation()
1233 for (BasicBlock *Pred : Preds) { in UpdateAnalysisInformation()
1259 static void UpdatePHINodes(BasicBlock *OrigBB, BasicBlock *NewBB, in UpdatePHINodes()
1260 ArrayRef<BasicBlock *> Preds, BranchInst *BI, in UpdatePHINodes()
1263 SmallPtrSet<BasicBlock *, 16> PredSet(Preds.begin(), Preds.end()); in UpdatePHINodes()
1264 for (BasicBlock::iterator I = OrigBB->begin(); isa<PHINode>(I); ) { in UpdatePHINodes()
1311 BasicBlock *IncomingBB = PN->getIncomingBlock(i); in UpdatePHINodes()
1323 BasicBlock *OrigBB, ArrayRef<BasicBlock *> Preds, const char *Suffix1,
1324 const char *Suffix2, SmallVectorImpl<BasicBlock *> &NewBBs,
1328 static BasicBlock *
1329 SplitBlockPredecessorsImpl(BasicBlock *BB, ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessorsImpl()
1340 SmallVector<BasicBlock*, 2> NewBBs; in SplitBlockPredecessorsImpl()
1349 BasicBlock *NewBB = BasicBlock::Create( in SplitBlockPredecessorsImpl()
1356 BasicBlock *OldLatch = nullptr; in SplitBlockPredecessorsImpl()
1373 for (BasicBlock *Pred : Preds) { in SplitBlockPredecessorsImpl()
1388 for (BasicBlock::iterator I = BB->begin(); isa<PHINode>(I); ++I) in SplitBlockPredecessorsImpl()
1403 BasicBlock *NewLatch = L->getLoopLatch(); in SplitBlockPredecessorsImpl()
1418 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors()
1419 ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessors()
1426 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors()
1427 ArrayRef<BasicBlock *> Preds, in SplitBlockPredecessors()
1437 BasicBlock *OrigBB, ArrayRef<BasicBlock *> Preds, const char *Suffix1, in SplitLandingPadPredecessorsImpl()
1438 const char *Suffix2, SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessorsImpl()
1445 BasicBlock *NewBB1 = BasicBlock::Create(OrigBB->getContext(), in SplitLandingPadPredecessorsImpl()
1455 for (BasicBlock *Pred : Preds) { in SplitLandingPadPredecessorsImpl()
1472 SmallVector<BasicBlock*, 8> NewBB2Preds; in SplitLandingPadPredecessorsImpl()
1475 BasicBlock *Pred = *i++; in SplitLandingPadPredecessorsImpl()
1483 BasicBlock *NewBB2 = nullptr; in SplitLandingPadPredecessorsImpl()
1486 NewBB2 = BasicBlock::Create(OrigBB->getContext(), in SplitLandingPadPredecessorsImpl()
1496 for (BasicBlock *NewBB2Pred : NewBB2Preds) in SplitLandingPadPredecessorsImpl()
1538 void llvm::SplitLandingPadPredecessors(BasicBlock *OrigBB, in SplitLandingPadPredecessors()
1539 ArrayRef<BasicBlock *> Preds, in SplitLandingPadPredecessors()
1541 SmallVectorImpl<BasicBlock *> &NewBBs, in SplitLandingPadPredecessors()
1550 ReturnInst *llvm::FoldReturnIntoUncondBranch(ReturnInst *RI, BasicBlock *BB, in FoldReturnIntoUncondBranch()
1551 BasicBlock *Pred, in FoldReturnIntoUncondBranch()
1609 BasicBlock::iterator SplitBefore, in SplitBlockAndInsertIfThen()
1613 BasicBlock *ThenBlock) { in SplitBlockAndInsertIfThen()
1622 BasicBlock::iterator SplitBefore, in SplitBlockAndInsertIfElse()
1626 BasicBlock *ElseBlock) { in SplitBlockAndInsertIfElse()
1634 void llvm::SplitBlockAndInsertIfThenElse(Value *Cond, BasicBlock::iterator SplitBefore, in SplitBlockAndInsertIfThenElse()
1639 BasicBlock *ThenBlock = nullptr; in SplitBlockAndInsertIfThenElse()
1640 BasicBlock *ElseBlock = nullptr; in SplitBlockAndInsertIfThenElse()
1650 Value *Cond, BasicBlock::iterator SplitBefore, BasicBlock **ThenBlock, in SplitBlockAndInsertIfThenElse()
1651 BasicBlock **ElseBlock, bool UnreachableThen, bool UnreachableElse, in SplitBlockAndInsertIfThenElse()
1659 SmallPtrSet<BasicBlock *, 8> UniqueOrigSuccessors; in SplitBlockAndInsertIfThenElse()
1660 BasicBlock *Head = SplitBefore->getParent(); in SplitBlockAndInsertIfThenElse()
1667 BasicBlock *Tail = Head->splitBasicBlock(SplitBefore); in SplitBlockAndInsertIfThenElse()
1668 BasicBlock *TrueBlock = Tail; in SplitBlockAndInsertIfThenElse()
1669 BasicBlock *FalseBlock = Tail; in SplitBlockAndInsertIfThenElse()
1674 auto handleBlock = [&](BasicBlock **PBB, bool Unreachable, BasicBlock *&BB, in SplitBlockAndInsertIfThenElse()
1683 BB = BasicBlock::Create(C, "", Head->getParent(), Tail); in SplitBlockAndInsertIfThenElse()
1712 for (BasicBlock *UniqueOrigSuccessor : UniqueOrigSuccessors) in SplitBlockAndInsertIfThenElse()
1714 for (BasicBlock *UniqueOrigSuccessor : UniqueOrigSuccessors) in SplitBlockAndInsertIfThenElse()
1732 BasicBlock *LoopPred = SplitBefore->getParent(); in SplitBlockAndInsertSimpleForLoop()
1733 BasicBlock *LoopBody = SplitBlock(SplitBefore->getParent(), SplitBefore); in SplitBlockAndInsertSimpleForLoop()
1734 BasicBlock *LoopExit = SplitBlock(SplitBefore->getParent(), SplitBefore); in SplitBlockAndInsertSimpleForLoop()
1802 BranchInst *llvm::GetIfCondition(BasicBlock *BB, BasicBlock *&IfTrue, in GetIfCondition()
1803 BasicBlock *&IfFalse) { in GetIfCondition()
1805 BasicBlock *Pred1 = nullptr; in GetIfCondition()
1806 BasicBlock *Pred2 = nullptr; in GetIfCondition()
1875 BasicBlock *CommonPred = Pred1->getSinglePredecessor(); in GetIfCondition()
1903 static void reconnectPhis(BasicBlock *Out, BasicBlock *GuardBlock, in reconnectPhis()
1904 const SetVector<BasicBlock *> &Incoming, in reconnectPhis()
1905 BasicBlock *FirstGuardBlock) { in reconnectPhis()
1932 using BBPredicates = DenseMap<BasicBlock *, Instruction *>;
1933 using BBSetVector = SetVector<BasicBlock *>;
1945 static std::tuple<Value *, BasicBlock *, BasicBlock *>
1946 redirectToHub(BasicBlock *BB, BasicBlock *FirstGuardBlock, in redirectToHub()
1953 BasicBlock *Succ0 = Branch->getSuccessor(0); in redirectToHub()
1954 BasicBlock *Succ1 = nullptr; in redirectToHub()
1985 static void setupBranchForGuard(SmallVectorImpl<BasicBlock *> &GuardBlocks, in setupBranchForGuard()
2007 SmallVectorImpl<BasicBlock *> &GuardBlocks, BBPredicates &GuardPredicates) { in calcPredicateUsingInteger()
2016 BasicBlock *Succ0; in calcPredicateUsingInteger()
2017 BasicBlock *Succ1; in calcPredicateUsingInteger()
2052 SmallVectorImpl<BasicBlock *> &GuardBlocks, BBPredicates &GuardPredicates, in calcPredicateUsingBooleans()
2073 BasicBlock *Succ0; in calcPredicateUsingBooleans()
2074 BasicBlock *Succ1; in calcPredicateUsingBooleans()
2120 convertToGuardPredicates(SmallVectorImpl<BasicBlock *> &GuardBlocks, in convertToGuardPredicates()
2130 BasicBlock::Create(F->getContext(), Prefix + ".guard", F)); in convertToGuardPredicates()
2146 BasicBlock *llvm::CreateControlFlowHub( in CreateControlFlowHub()
2147 DomTreeUpdater *DTU, SmallVectorImpl<BasicBlock *> &GuardBlocks, in CreateControlFlowHub()
2225 bool llvm::isPresplitCoroSuspendExitEdge(const BasicBlock &Src, in isPresplitCoroSuspendExitEdge()
2226 const BasicBlock &Dest) { in isPresplitCoroSuspendExitEdge()