Lines Matching refs:BasicBlock
37 BasicBlock *BB, in getPreviousDefRecursive()
38 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> &CachedPreviousDef) { in getPreviousDefRecursive() argument
49 if (BasicBlock *Pred = BB->getUniquePredecessor()) { in getPreviousDefRecursive()
140 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> CachedPreviousDef; in getPreviousDef()
173 BasicBlock *BB, in getPreviousDefFromEnd()
174 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> &CachedPreviousDef) { in getPreviousDefFromEnd() argument
264 SmallPtrSet<BasicBlock *, 16> Visited; in insertUse()
265 BasicBlock *StartBlock = MU->getBlock(); in insertUse()
285 static void setMemoryPhiValueForBlock(MemoryPhi *MP, const BasicBlock *BB, in setMemoryPhiValueForBlock()
293 for (const BasicBlock *BlockBB : llvm::drop_begin(MP->blocks(), i)) { in setMemoryPhiValueForBlock()
364 SmallPtrSet<BasicBlock *, 2> DefiningBlocks; in insertDef()
375 SmallVector<BasicBlock *, 32> IDFBlocks; in insertDef()
398 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> CachedPreviousDef; in insertDef()
433 BasicBlock *StartBlock = MD->getBlock(); in insertDef()
435 SmallPtrSet<BasicBlock *, 16> Visited; in insertDef()
463 SmallPtrSet<const BasicBlock *, 8> Seen; in fixupDefs()
464 SmallVector<const BasicBlock *, 16> Worklist; in fixupDefs()
494 const BasicBlock *FixupBlock = Worklist.pop_back_val(); in fixupDefs()
531 void MemorySSAUpdater::removeEdge(BasicBlock *From, BasicBlock *To) { in removeEdge()
538 void MemorySSAUpdater::removeDuplicatePhiEdgesBetween(const BasicBlock *From, in removeDuplicatePhiEdgesBetween()
539 const BasicBlock *To) { in removeDuplicatePhiEdgesBetween()
542 MPhi->unorderedDeleteIncomingIf([&](const MemoryAccess *, BasicBlock *B) { in removeDuplicatePhiEdgesBetween()
596 void MemorySSAUpdater::cloneUsesAndDefs(BasicBlock *BB, BasicBlock *NewBB, in cloneUsesAndDefs()
629 BasicBlock *Header, BasicBlock *Preheader, BasicBlock *BEBlock) { in updatePhisWhenInsertingUniqueBackedgeBlock()
640 BasicBlock *IBB = MPhi->getIncomingBlock(I); in updatePhisWhenInsertingUniqueBackedgeBlock()
668 ArrayRef<BasicBlock *> ExitBlocks, in updateForClonedLoop()
675 BasicBlock *NewPhiBB = NewPhi->getBlock(); in updateForClonedLoop()
676 SmallPtrSet<BasicBlock *, 4> NewPhiBBPreds(pred_begin(NewPhiBB), in updateForClonedLoop()
680 BasicBlock *IncBB = Phi->getIncomingBlock(It); in updateForClonedLoop()
682 if (BasicBlock *NewIncBB = cast_or_null<BasicBlock>(VMap.lookup(IncBB))) in updateForClonedLoop()
705 auto ProcessBlock = [&](BasicBlock *BB) { in updateForClonedLoop()
706 BasicBlock *NewBlock = cast_or_null<BasicBlock>(VMap.lookup(BB)); in updateForClonedLoop()
722 for (auto *BB : llvm::concat<BasicBlock *const>(LoopBlocks, ExitBlocks)) in updateForClonedLoop()
725 for (auto *BB : llvm::concat<BasicBlock *const>(LoopBlocks, ExitBlocks)) in updateForClonedLoop()
732 BasicBlock *BB, BasicBlock *P1, const ValueToValueMapTy &VM) { in updateForClonedBlockIntoPred()
749 ArrayRef<BasicBlock *> ExitBlocks, Iter ValuesBegin, Iter ValuesEnd, in privateUpdateExitBlocksForClonedLoop()
755 if (BasicBlock *NewExit = cast_or_null<BasicBlock>(VMap->lookup(Exit))) { in privateUpdateExitBlocksForClonedLoop()
756 BasicBlock *ExitSucc = NewExit->getTerminator()->getSuccessor(0); in privateUpdateExitBlocksForClonedLoop()
763 ArrayRef<BasicBlock *> ExitBlocks, const ValueToValueMapTy &VMap, in updateExitBlocksForClonedLoop()
771 ArrayRef<BasicBlock *> ExitBlocks, in updateExitBlocksForClonedLoop()
814 GraphDiff<BasicBlock *> GD(RevDeleteUpdates); in applyUpdates()
826 GraphDiff<BasicBlock *> GD; in applyUpdates()
837 GraphDiff<BasicBlock *> GD; in applyInsertUpdates()
843 const GraphDiff<BasicBlock *> *GD) { in applyInsertUpdates()
845 auto GetLastDef = [&](BasicBlock *BB) -> MemoryAccess * { in applyInsertUpdates()
854 BasicBlock *Pred = nullptr; in applyInsertUpdates()
891 [&](const SmallSetVector<BasicBlock *, 2> &BBSet) -> BasicBlock * { in applyInsertUpdates() argument
892 BasicBlock *PrevIDom = *BBSet.begin(); in applyInsertUpdates()
901 [&](BasicBlock *PrevIDom, BasicBlock *CurrIDom, in applyInsertUpdates()
902 SmallVectorImpl<BasicBlock *> &BlocksPrevDom) { in applyInsertUpdates()
906 BasicBlock *NextIDom = PrevIDom; in applyInsertUpdates()
907 while (BasicBlock *UpIDom = in applyInsertUpdates()
931 SmallSetVector<BasicBlock *, 2> Added; in applyInsertUpdates()
932 SmallSetVector<BasicBlock *, 2> Prev; in applyInsertUpdates()
934 SmallDenseMap<BasicBlock *, PredInfo> PredMap; in applyInsertUpdates()
937 BasicBlock *BB = Edge.getTo(); in applyInsertUpdates()
943 SmallDenseMap<std::pair<BasicBlock *, BasicBlock *>, int> EdgeCountMap; in applyInsertUpdates()
944 SmallPtrSet<BasicBlock *, 2> NewBlocks; in applyInsertUpdates()
976 SmallVector<BasicBlock *, 16> BlocksWithDefsToReplace; in applyInsertUpdates()
982 BasicBlock *BB = Edge.getTo(); in applyInsertUpdates()
1001 SmallDenseMap<BasicBlock *, MemoryAccess *> LastDefAddedPred; in applyInsertUpdates()
1056 BasicBlock *PrevIDom = FindNearestCommonDominator(PrevBlockSet); in applyInsertUpdates()
1058 BasicBlock *NewIDom = DT.getNode(BB)->getIDom()->getBlock(); in applyInsertUpdates()
1068 SmallVector<BasicBlock *, 8> BlocksToProcess; in applyInsertUpdates()
1074 SmallVector<BasicBlock *, 32> IDFBlocks; in applyInsertUpdates()
1077 SmallPtrSet<BasicBlock *, 16> DefiningBlocks(BlocksToProcess.begin(), in applyInsertUpdates()
1112 BasicBlock *DominatingBlock = DefToReplaceUses.getBlock(); in applyInsertUpdates()
1116 BasicBlock *DominatedBlock = UsrPhi->getIncomingBlock(U); in applyInsertUpdates()
1120 BasicBlock *DominatedBlock = Usr->getBlock(); in applyInsertUpdates()
1141 void MemorySSAUpdater::moveTo(MemoryUseOrDef *What, BasicBlock *BB, in moveTo()
1175 void MemorySSAUpdater::moveToPlace(MemoryUseOrDef *What, BasicBlock *BB, in moveToPlace()
1187 void MemorySSAUpdater::moveAllAccesses(BasicBlock *From, BasicBlock *To, in moveAllAccesses()
1222 void MemorySSAUpdater::moveAllAfterSpliceBlocks(BasicBlock *From, in moveAllAfterSpliceBlocks()
1223 BasicBlock *To, in moveAllAfterSpliceBlocks()
1228 for (BasicBlock *Succ : successors(To)) in moveAllAfterSpliceBlocks()
1233 void MemorySSAUpdater::moveAllAfterMergeBlocks(BasicBlock *From, BasicBlock *To, in moveAllAfterMergeBlocks()
1238 for (BasicBlock *Succ : successors(From)) in moveAllAfterMergeBlocks()
1244 BasicBlock *Old, BasicBlock *New, ArrayRef<BasicBlock *> Preds, in wireOldPredecessorsToNewImmediatePredecessor()
1259 SmallPtrSet<BasicBlock *, 16> PredsSet(Preds.begin(), Preds.end()); in wireOldPredecessorsToNewImmediatePredecessor()
1266 Phi->unorderedDeleteIncomingIf([&](MemoryAccess *MA, BasicBlock *B) { in wireOldPredecessorsToNewImmediatePredecessor()
1348 const SmallSetVector<BasicBlock *, 8> &DeadBlocks) { in removeBlocks() argument
1350 for (BasicBlock *BB : DeadBlocks) { in removeBlocks()
1353 for (BasicBlock *Succ : successors(TI)) in removeBlocks()
1366 for (BasicBlock *BB : DeadBlocks) { in removeBlocks()
1384 const BasicBlock *BB = I->getParent(); in changeToUnreachable()
1393 for (const BasicBlock *Successor : successors(BB)) { in changeToUnreachable()
1405 Instruction *I, MemoryAccess *Definition, const BasicBlock *BB, in createMemoryAccessInBB()
1412 Instruction *I, MemoryAccess *Definition, const BasicBlock *BB, in createMemoryAccessInBB()