Lines Matching refs:MachineBasicBlock
59 typedef std::vector<std::pair<MachineBasicBlock*,unsigned> > AvailableValsTy;
90 MachineBasicBlock *BB);
91 void ProcessPHI(MachineInstr *MI, MachineBasicBlock *TailBB,
92 MachineBasicBlock *PredBB,
98 MachineBasicBlock *TailBB,
99 MachineBasicBlock *PredBB,
103 void UpdateSuccessorsPHIs(MachineBasicBlock *FromBB, bool isDead,
104 SmallVectorImpl<MachineBasicBlock *> &TDBBs,
105 SmallSetVector<MachineBasicBlock*, 8> &Succs);
108 bool IsSimple, MachineBasicBlock &TailBB);
109 bool isSimpleBB(MachineBasicBlock *TailBB);
110 bool canCompletelyDuplicateBB(MachineBasicBlock &BB);
111 bool duplicateSimpleBB(MachineBasicBlock *TailBB,
112 SmallVectorImpl<MachineBasicBlock *> &TDBBs,
115 bool TailDuplicate(MachineBasicBlock *TailBB,
118 SmallVectorImpl<MachineBasicBlock *> &TDBBs,
120 bool TailDuplicateAndUpdate(MachineBasicBlock *MBB,
124 void RemoveDeadBlock(MachineBasicBlock *MBB);
164 MachineBasicBlock *MBB = &*I;
165 SmallSetVector<MachineBasicBlock*, 8> Preds(MBB->pred_begin(),
167 MachineBasicBlock::iterator MI = MBB->begin();
171 for (SmallSetVector<MachineBasicBlock *, 8>::iterator PI = Preds.begin(),
173 MachineBasicBlock *PredBB = *PI;
176 MachineBasicBlock *PHIBB = MI->getOperand(i+1).getMBB();
191 MachineBasicBlock *PHIBB = MI->getOperand(i+1).getMBB();
212 TailDuplicatePass::TailDuplicateAndUpdate(MachineBasicBlock *MBB,
216 SmallSetVector<MachineBasicBlock*, 8> Succs(MBB->succ_begin(),
219 SmallVector<MachineBasicBlock*, 8> TDBBs;
252 MachineBasicBlock *DefBB = nullptr;
262 MachineBasicBlock *SrcBB = LI->second[j].first;
325 MachineBasicBlock *MBB = &*I++;
344 static bool isDefLiveOut(unsigned Reg, MachineBasicBlock *BB,
355 static unsigned getPHISrcRegOpIdx(MachineInstr *MI, MachineBasicBlock *SrcBB) {
366 static void getRegsUsedByPHIs(const MachineBasicBlock &BB,
380 MachineBasicBlock *BB) {
395 MachineInstr *MI, MachineBasicBlock *TailBB, MachineBasicBlock *PredBB,
426 MachineBasicBlock *TailBB,
427 MachineBasicBlock *PredBB,
464 TailDuplicatePass::UpdateSuccessorsPHIs(MachineBasicBlock *FromBB, bool isDead,
465 SmallVectorImpl<MachineBasicBlock *> &TDBBs,
466 SmallSetVector<MachineBasicBlock*,8> &Succs) {
467 for (SmallSetVector<MachineBasicBlock*, 8>::iterator SI = Succs.begin(),
469 MachineBasicBlock *SuccBB = *SI;
470 for (MachineBasicBlock::iterator II = SuccBB->begin(), EE = SuccBB->end();
508 MachineBasicBlock *SrcBB = LI->second[j].first;
528 MachineBasicBlock *SrcBB = TDBBs[j];
550 MachineBasicBlock &TailBB) {
645 TailDuplicatePass::isSimpleBB(MachineBasicBlock *TailBB) {
650 MachineBasicBlock::iterator I = TailBB->getFirstNonDebugInstr();
657 bothUsedInPHI(const MachineBasicBlock &A,
658 SmallPtrSet<MachineBasicBlock*, 8> SuccsB) {
659 for (MachineBasicBlock *BB : A.successors())
667 TailDuplicatePass::canCompletelyDuplicateBB(MachineBasicBlock &BB) {
668 for (MachineBasicBlock *PredBB : BB.predecessors()) {
672 MachineBasicBlock *PredTBB = nullptr, *PredFBB = nullptr;
684 TailDuplicatePass::duplicateSimpleBB(MachineBasicBlock *TailBB,
685 SmallVectorImpl<MachineBasicBlock *> &TDBBs,
688 SmallPtrSet<MachineBasicBlock*, 8> Succs(TailBB->succ_begin(),
690 SmallVector<MachineBasicBlock*, 8> Preds(TailBB->pred_begin(),
693 for (SmallSetVector<MachineBasicBlock *, 8>::iterator PI = Preds.begin(),
695 MachineBasicBlock *PredBB = *PI;
703 MachineBasicBlock *PredTBB = nullptr, *PredFBB = nullptr;
712 MachineBasicBlock *NewTarget = *TailBB->succ_begin();
713 MachineBasicBlock *NextBB = &*std::next(PredBB->getIterator());
763 TailDuplicatePass::TailDuplicate(MachineBasicBlock *TailBB,
766 SmallVectorImpl<MachineBasicBlock *> &TDBBs,
780 SmallSetVector<MachineBasicBlock*, 8> Preds(TailBB->pred_begin(),
782 for (SmallSetVector<MachineBasicBlock *, 8>::iterator PI = Preds.begin(),
784 MachineBasicBlock *PredBB = *PI;
792 MachineBasicBlock *PredTBB, *PredFBB;
829 MachineBasicBlock::instr_iterator I = TailBB->instr_begin();
843 MachineBasicBlock::iterator Loc = PredBB->getFirstTerminator();
859 for (MachineBasicBlock::succ_iterator I = TailBB->succ_begin(),
870 MachineBasicBlock *PrevBB = &*std::prev(TailBB->getIterator());
871 MachineBasicBlock *PriorTBB = nullptr, *PriorFBB = nullptr;
884 MachineBasicBlock::iterator I = TailBB->begin();
904 MachineBasicBlock
945 for (SmallSetVector<MachineBasicBlock *, 8>::iterator PI = Preds.begin(),
947 MachineBasicBlock *PredBB = *PI;
957 MachineBasicBlock::iterator I = TailBB->begin();
965 MachineBasicBlock::iterator Loc = PredBB->getFirstTerminator();
978 void TailDuplicatePass::RemoveDeadBlock(MachineBasicBlock *MBB) {