Lines Matching refs:MachineBasicBlock

57 #include "llvm/CodeGen/MachineBasicBlock.h"
123 MachineBasicBlock *Save = nullptr;
128 MachineBasicBlock *Restore = nullptr;
154 const MachineBasicBlock *Entry = nullptr;
197 void updateSaveRestorePoints(MachineBasicBlock &MBB, RegScavenger *RS);
202 const ReversePostOrderTraversal<MachineBasicBlock *> &RPOT,
219 const MachineBasicBlock *CurRestore,
220 const DenseSet<const MachineBasicBlock *> &ReachableByDirty,
221 SmallVectorImpl<MachineBasicBlock *> &DirtyPreds,
222 SmallVectorImpl<MachineBasicBlock *> &CleanPreds,
377 static MachineBasicBlock *FindIDom(MachineBasicBlock &Block, ListOfBBs BBs,
379 MachineBasicBlock *IDom = &Block;
380 for (MachineBasicBlock *BB : BBs) {
391 MachineBasicBlock &Entry) {
393 MachineBasicBlock *TBB = nullptr, *FBB = nullptr;
403 hasDirtyPred(const DenseSet<const MachineBasicBlock *> &ReachableByDirty,
404 const MachineBasicBlock &MBB) {
405 for (const MachineBasicBlock *PredBB : MBB.predecessors())
412 static void markAllReachable(DenseSet<const MachineBasicBlock *> &Visited,
413 const MachineBasicBlock &MBB) {
414 SmallVector<MachineBasicBlock *, 4> Worklist(MBB.succ_begin(),
418 MachineBasicBlock *SuccMBB = Worklist.pop_back_val();
427 const DenseSet<const MachineBasicBlock *> &DirtyBBs,
428 DenseSet<const MachineBasicBlock *> &ReachableByDirty) {
429 for (const MachineBasicBlock *MBB : DirtyBBs) {
440 isSaveReachableThroughClean(const MachineBasicBlock *SavePoint,
441 ArrayRef<MachineBasicBlock *> CleanPreds) {
442 DenseSet<const MachineBasicBlock *> Visited;
443 SmallVector<MachineBasicBlock *, 4> Worklist(CleanPreds.begin(),
446 MachineBasicBlock *CleanBB = Worklist.pop_back_val();
466 static void updateTerminator(MachineBasicBlock *BBToUpdate,
467 MachineBasicBlock *NMBB,
486 static MachineBasicBlock *
487 tryToSplitRestore(MachineBasicBlock *MBB,
488 ArrayRef<MachineBasicBlock *> DirtyPreds,
496 SmallPtrSet<MachineBasicBlock *, 8> MBBFallthrough;
497 for (MachineBasicBlock *BB : DirtyPreds)
501 MachineBasicBlock *NMBB = MF->CreateMachineBasicBlock();
506 for (const MachineBasicBlock::RegisterMaskPair &LI : MBB->liveins())
513 for (MachineBasicBlock *SuccBB : DirtyPreds)
518 for (MachineBasicBlock *BBToUpdate : MBBFallthrough)
530 static void rollbackRestoreSplit(MachineFunction &MF, MachineBasicBlock *NMBB,
531 MachineBasicBlock *MBB,
532 ArrayRef<MachineBasicBlock *> DirtyPreds,
537 SmallPtrSet<MachineBasicBlock *, 8> NMBBFallthrough;
538 for (MachineBasicBlock *BB : DirtyPreds)
543 for (MachineBasicBlock *SuccBB : DirtyPreds)
549 for (MachineBasicBlock *BBToUpdate : NMBBFallthrough)
557 const MachineBasicBlock *CurRestore,
558 const DenseSet<const MachineBasicBlock *> &ReachableByDirty,
559 SmallVectorImpl<MachineBasicBlock *> &DirtyPreds,
560 SmallVectorImpl<MachineBasicBlock *> &CleanPreds,
566 for (MachineBasicBlock *PredBB : CurRestore->predecessors()) {
584 MachineBasicBlock *InitSave = nullptr;
585 MachineBasicBlock *InitRestore = nullptr;
593 for (MachineBasicBlock &MBB : MF) {
612 for (MachineBasicBlock &MBB : MF)
616 DenseSet<const MachineBasicBlock *> DirtyBBs;
617 for (MachineBasicBlock &MBB : MF) {
630 DenseSet<const MachineBasicBlock *> ReachableByDirty;
634 SmallVector<MachineBasicBlock *, 2> DirtyPreds;
635 SmallVector<MachineBasicBlock *, 2> CleanPreds;
641 MachineBasicBlock *NewSave =
660 MachineBasicBlock *NewRestore =
686 void ShrinkWrap::updateSaveRestorePoints(MachineBasicBlock &MBB,
780 SmallVector<MachineBasicBlock*, 4> ExitBlocks;
784 MachineBasicBlock *IPdom = Restore;
785 for (MachineBasicBlock *LoopExitBB: ExitBlocks) {
807 const MachineBasicBlock *MBB) {
818 const ReversePostOrderTraversal<MachineBasicBlock *> &RPOT,
820 for (MachineBasicBlock *MBB : RPOT) {
848 for (const MachineBasicBlock *Pred : MBB->predecessors()) {
903 MachineBasicBlock *NewBB;
934 ReversePostOrderTraversal<MachineBasicBlock *> RPOT(&*MF.begin());
935 if (containsIrreducibleCFG<MachineBasicBlock *>(RPOT, *MLI)) {