Lines Matching refs:BasicBlock

19 #include "llvm/IR/BasicBlock.h"
37 BasicBlock *BB,
38 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> &CachedPreviousDef) {
49 if (BasicBlock *Pred = BB->getUniquePredecessor()) {
140 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> CachedPreviousDef;
173 BasicBlock *BB,
174 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> &CachedPreviousDef) {
264 SmallPtrSet<BasicBlock *, 16> Visited;
265 BasicBlock *StartBlock = MU->getBlock();
285 static void setMemoryPhiValueForBlock(MemoryPhi *MP, const BasicBlock *BB,
293 for (const BasicBlock *BlockBB : llvm::drop_begin(MP->blocks(), i)) {
364 SmallPtrSet<BasicBlock *, 2> DefiningBlocks;
375 SmallVector<BasicBlock *, 32> IDFBlocks;
398 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> CachedPreviousDef;
433 BasicBlock *StartBlock = MD->getBlock();
435 SmallPtrSet<BasicBlock *, 16> Visited;
463 SmallPtrSet<const BasicBlock *, 8> Seen;
464 SmallVector<const BasicBlock *, 16> Worklist;
494 const BasicBlock *FixupBlock = Worklist.pop_back_val();
531 void MemorySSAUpdater::removeEdge(BasicBlock *From, BasicBlock *To) {
538 void MemorySSAUpdater::removeDuplicatePhiEdgesBetween(const BasicBlock *From,
539 const BasicBlock *To) {
542 MPhi->unorderedDeleteIncomingIf([&](const MemoryAccess *, BasicBlock *B) {
570 MemorySSA *MSSA, function_ref<bool(BasicBlock *BB)> IsInClonedRegion) {
599 BasicBlock *BB, BasicBlock *NewBB, const ValueToValueMapTy &VMap,
600 PhiToDefMap &MPhiMap, function_ref<bool(BasicBlock *)> IsInClonedRegion,
631 BasicBlock *Header, BasicBlock *Preheader, BasicBlock *BEBlock) {
642 BasicBlock *IBB = MPhi->getIncomingBlock(I);
670 ArrayRef<BasicBlock *> ExitBlocks,
673 SmallSetVector<BasicBlock *, 16> Blocks;
674 for (BasicBlock *BB : concat<BasicBlock *const>(LoopBlocks, ExitBlocks))
677 auto IsInClonedRegion = [&](BasicBlock *BB) { return Blocks.contains(BB); };
682 BasicBlock *NewPhiBB = NewPhi->getBlock();
683 SmallPtrSet<BasicBlock *, 4> NewPhiBBPreds(pred_begin(NewPhiBB),
687 BasicBlock *IncBB = Phi->getIncomingBlock(It);
689 if (BasicBlock *NewIncBB = cast_or_null<BasicBlock>(VMap.lookup(IncBB)))
713 auto ProcessBlock = [&](BasicBlock *BB) {
714 BasicBlock *NewBlock = cast_or_null<BasicBlock>(VMap.lookup(BB));
740 BasicBlock *BB, BasicBlock *P1, const ValueToValueMapTy &VM) {
753 BB, P1, VM, MPhiMap, [&](BasicBlock *CheckBB) { return BB == CheckBB; },
759 ArrayRef<BasicBlock *> ExitBlocks, Iter ValuesBegin, Iter ValuesEnd,
765 if (BasicBlock *NewExit = cast_or_null<BasicBlock>(VMap->lookup(Exit))) {
766 BasicBlock *ExitSucc = NewExit->getTerminator()->getSuccessor(0);
773 ArrayRef<BasicBlock *> ExitBlocks, const ValueToValueMapTy &VMap,
781 ArrayRef<BasicBlock *> ExitBlocks,
824 GraphDiff<BasicBlock *> GD(RevDeleteUpdates);
836 GraphDiff<BasicBlock *> GD;
847 GraphDiff<BasicBlock *> GD;
853 const GraphDiff<BasicBlock *> *GD) {
855 auto GetLastDef = [&](BasicBlock *BB) -> MemoryAccess * {
864 BasicBlock *Pred = nullptr;
901 [&](const SmallSetVector<BasicBlock *, 2> &BBSet) -> BasicBlock * {
902 BasicBlock *PrevIDom = *BBSet.begin();
911 [&](BasicBlock *PrevIDom, BasicBlock *CurrIDom,
912 SmallVectorImpl<BasicBlock *> &BlocksPrevDom) {
916 BasicBlock *NextIDom = PrevIDom;
917 while (BasicBlock *UpIDom =
941 SmallSetVector<BasicBlock *, 2> Added;
942 SmallSetVector<BasicBlock *, 2> Prev;
944 SmallDenseMap<BasicBlock *, PredInfo> PredMap;
947 BasicBlock *BB = Edge.getTo();
953 SmallDenseMap<std::pair<BasicBlock *, BasicBlock *>, int> EdgeCountMap;
954 SmallPtrSet<BasicBlock *, 2> NewBlocks;
986 SmallVector<BasicBlock *, 16> BlocksWithDefsToReplace;
992 BasicBlock *BB = Edge.getTo();
1011 SmallDenseMap<BasicBlock *, MemoryAccess *> LastDefAddedPred;
1066 BasicBlock *PrevIDom = FindNearestCommonDominator(PrevBlockSet);
1068 BasicBlock *NewIDom = DT.getNode(BB)->getIDom()->getBlock();
1078 SmallVector<BasicBlock *, 8> BlocksToProcess;
1084 SmallVector<BasicBlock *, 32> IDFBlocks;
1087 SmallPtrSet<BasicBlock *, 16> DefiningBlocks(BlocksToProcess.begin(),
1122 BasicBlock *DominatingBlock = DefToReplaceUses.getBlock();
1126 BasicBlock *DominatedBlock = UsrPhi->getIncomingBlock(U);
1130 BasicBlock *DominatedBlock = Usr->getBlock();
1151 void MemorySSAUpdater::moveTo(MemoryUseOrDef *What, BasicBlock *BB,
1185 void MemorySSAUpdater::moveToPlace(MemoryUseOrDef *What, BasicBlock *BB,
1197 void MemorySSAUpdater::moveAllAccesses(BasicBlock *From, BasicBlock *To,
1232 void MemorySSAUpdater::moveAllAfterSpliceBlocks(BasicBlock *From,
1233 BasicBlock *To,
1238 for (BasicBlock *Succ : successors(To))
1243 void MemorySSAUpdater::moveAllAfterMergeBlocks(BasicBlock *From, BasicBlock *To,
1248 for (BasicBlock *Succ : successors(From))
1254 BasicBlock *Old, BasicBlock *New, ArrayRef<BasicBlock *> Preds,
1269 SmallPtrSet<BasicBlock *, 16> PredsSet(Preds.begin(), Preds.end());
1276 Phi->unorderedDeleteIncomingIf([&](MemoryAccess *MA, BasicBlock *B) {
1358 const SmallSetVector<BasicBlock *, 8> &DeadBlocks) {
1360 for (BasicBlock *BB : DeadBlocks) {
1363 for (BasicBlock *Succ : successors(TI))
1376 for (BasicBlock *BB : DeadBlocks) {
1394 const BasicBlock *BB = I->getParent();
1403 for (const BasicBlock *Successor : successors(BB)) {
1415 Instruction *I, MemoryAccess *Definition, const BasicBlock *BB,