Lines Matching refs:MachineBasicBlock

123   MachineBasicBlock *Save = nullptr;
128 MachineBasicBlock *Restore = nullptr;
154 const MachineBasicBlock *Entry = nullptr;
195 void updateSaveRestorePoints(MachineBasicBlock &MBB, RegScavenger *RS);
200 const ReversePostOrderTraversal<MachineBasicBlock *> &RPOT,
217 const MachineBasicBlock *CurRestore,
218 const DenseSet<const MachineBasicBlock *> &ReachableByDirty,
219 SmallVectorImpl<MachineBasicBlock *> &DirtyPreds,
220 SmallVectorImpl<MachineBasicBlock *> &CleanPreds,
375 static MachineBasicBlock *FindIDom(MachineBasicBlock &Block, ListOfBBs BBs, in FindIDom()
377 MachineBasicBlock *IDom = &Block; in FindIDom()
378 for (MachineBasicBlock *BB : BBs) { in FindIDom()
389 MachineBasicBlock &Entry) { in isAnalyzableBB()
391 MachineBasicBlock *TBB = nullptr, *FBB = nullptr; in isAnalyzableBB()
401 hasDirtyPred(const DenseSet<const MachineBasicBlock *> &ReachableByDirty, in hasDirtyPred()
402 const MachineBasicBlock &MBB) { in hasDirtyPred()
403 for (const MachineBasicBlock *PredBB : MBB.predecessors()) in hasDirtyPred()
410 static void markAllReachable(DenseSet<const MachineBasicBlock *> &Visited, in markAllReachable()
411 const MachineBasicBlock &MBB) { in markAllReachable()
412 SmallVector<MachineBasicBlock *, 4> Worklist(MBB.succ_begin(), in markAllReachable()
416 MachineBasicBlock *SuccMBB = Worklist.pop_back_val(); in markAllReachable()
425 const DenseSet<const MachineBasicBlock *> &DirtyBBs, in collectBlocksReachableByDirty()
426 DenseSet<const MachineBasicBlock *> &ReachableByDirty) { in collectBlocksReachableByDirty()
427 for (const MachineBasicBlock *MBB : DirtyBBs) { in collectBlocksReachableByDirty()
438 isSaveReachableThroughClean(const MachineBasicBlock *SavePoint, in isSaveReachableThroughClean()
439 ArrayRef<MachineBasicBlock *> CleanPreds) { in isSaveReachableThroughClean()
440 DenseSet<const MachineBasicBlock *> Visited; in isSaveReachableThroughClean()
441 SmallVector<MachineBasicBlock *, 4> Worklist(CleanPreds.begin(), in isSaveReachableThroughClean()
444 MachineBasicBlock *CleanBB = Worklist.pop_back_val(); in isSaveReachableThroughClean()
464 static void updateTerminator(MachineBasicBlock *BBToUpdate, in updateTerminator()
465 MachineBasicBlock *NMBB, in updateTerminator()
484 static MachineBasicBlock *
485 tryToSplitRestore(MachineBasicBlock *MBB, in tryToSplitRestore()
486 ArrayRef<MachineBasicBlock *> DirtyPreds, in tryToSplitRestore()
494 SmallPtrSet<MachineBasicBlock *, 8> MBBFallthrough; in tryToSplitRestore()
495 for (MachineBasicBlock *BB : DirtyPreds) in tryToSplitRestore()
499 MachineBasicBlock *NMBB = MF->CreateMachineBasicBlock(); in tryToSplitRestore()
504 for (const MachineBasicBlock::RegisterMaskPair &LI : MBB->liveins()) in tryToSplitRestore()
511 for (MachineBasicBlock *SuccBB : DirtyPreds) in tryToSplitRestore()
516 for (MachineBasicBlock *BBToUpdate : MBBFallthrough) in tryToSplitRestore()
528 static void rollbackRestoreSplit(MachineFunction &MF, MachineBasicBlock *NMBB, in rollbackRestoreSplit()
529 MachineBasicBlock *MBB, in rollbackRestoreSplit()
530 ArrayRef<MachineBasicBlock *> DirtyPreds, in rollbackRestoreSplit()
535 SmallPtrSet<MachineBasicBlock *, 8> NMBBFallthrough; in rollbackRestoreSplit()
536 for (MachineBasicBlock *BB : DirtyPreds) in rollbackRestoreSplit()
541 for (MachineBasicBlock *SuccBB : DirtyPreds) in rollbackRestoreSplit()
547 for (MachineBasicBlock *BBToUpdate : NMBBFallthrough) in rollbackRestoreSplit()
555 const MachineBasicBlock *CurRestore, in checkIfRestoreSplittable()
556 const DenseSet<const MachineBasicBlock *> &ReachableByDirty, in checkIfRestoreSplittable()
557 SmallVectorImpl<MachineBasicBlock *> &DirtyPreds, in checkIfRestoreSplittable()
558 SmallVectorImpl<MachineBasicBlock *> &CleanPreds, in checkIfRestoreSplittable()
564 for (MachineBasicBlock *PredBB : CurRestore->predecessors()) { in checkIfRestoreSplittable()
582 MachineBasicBlock *InitSave = nullptr; in postShrinkWrapping()
583 MachineBasicBlock *InitRestore = nullptr; in postShrinkWrapping()
591 for (MachineBasicBlock &MBB : MF) { in postShrinkWrapping()
610 for (MachineBasicBlock &MBB : MF) in postShrinkWrapping()
614 DenseSet<const MachineBasicBlock *> DirtyBBs; in postShrinkWrapping()
615 for (MachineBasicBlock &MBB : MF) { in postShrinkWrapping()
628 DenseSet<const MachineBasicBlock *> ReachableByDirty; in postShrinkWrapping()
632 SmallVector<MachineBasicBlock *, 2> DirtyPreds; in postShrinkWrapping()
633 SmallVector<MachineBasicBlock *, 2> CleanPreds; in postShrinkWrapping()
639 MachineBasicBlock *NewSave = in postShrinkWrapping()
658 MachineBasicBlock *NewRestore = in postShrinkWrapping()
684 void ShrinkWrap::updateSaveRestorePoints(MachineBasicBlock &MBB, in updateSaveRestorePoints()
778 SmallVector<MachineBasicBlock*, 4> ExitBlocks; in updateSaveRestorePoints()
782 MachineBasicBlock *IPdom = Restore; in updateSaveRestorePoints()
783 for (MachineBasicBlock *LoopExitBB: ExitBlocks) { in updateSaveRestorePoints()
805 const MachineBasicBlock *MBB) { in giveUpWithRemarks()
816 const ReversePostOrderTraversal<MachineBasicBlock *> &RPOT, in performShrinkWrapping()
818 for (MachineBasicBlock *MBB : RPOT) { in performShrinkWrapping()
846 for (const MachineBasicBlock *Pred : MBB->predecessors()) { in performShrinkWrapping()
901 MachineBasicBlock *NewBB; in performShrinkWrapping()
932 ReversePostOrderTraversal<MachineBasicBlock *> RPOT(&*MF.begin()); in runOnMachineFunction()
933 if (containsIrreducibleCFG<MachineBasicBlock *>(RPOT, *MLI)) { in runOnMachineFunction()