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,
381 MachineBasicBlock *BB) {
397 MachineInstr *MI, MachineBasicBlock *TailBB, MachineBasicBlock *PredBB,
428 MachineBasicBlock *TailBB,
429 MachineBasicBlock *PredBB,
463 TailDuplicatePass::UpdateSuccessorsPHIs(MachineBasicBlock *FromBB, bool isDead,
464 SmallVectorImpl<MachineBasicBlock *> &TDBBs,
465 SmallSetVector<MachineBasicBlock*,8> &Succs) {
466 for (SmallSetVector<MachineBasicBlock*, 8>::iterator SI = Succs.begin(),
468 MachineBasicBlock *SuccBB = *SI;
469 for (MachineBasicBlock::iterator II = SuccBB->begin(), EE = SuccBB->end();
507 MachineBasicBlock *SrcBB = LI->second[j].first;
527 MachineBasicBlock *SrcBB = TDBBs[j];
549 MachineBasicBlock &TailBB) {
584 for (MachineBasicBlock::iterator I = TailBB.begin(); I != TailBB.end(); ++I) {
622 TailDuplicatePass::isSimpleBB(MachineBasicBlock *TailBB) {
627 MachineBasicBlock::iterator I = TailBB->begin();
628 MachineBasicBlock::iterator E = TailBB->end();
637 bothUsedInPHI(const MachineBasicBlock &A,
638 SmallPtrSet<MachineBasicBlock*, 8> SuccsB) {
639 for (MachineBasicBlock::const_succ_iterator SI = A.succ_begin(),
641 MachineBasicBlock *BB = *SI;
650 TailDuplicatePass::canCompletelyDuplicateBB(MachineBasicBlock &BB) {
651 for (MachineBasicBlock::pred_iterator PI = BB.pred_begin(),
653 MachineBasicBlock *PredBB = *PI;
658 MachineBasicBlock *PredTBB = nullptr, *PredFBB = nullptr;
670 TailDuplicatePass::duplicateSimpleBB(MachineBasicBlock *TailBB,
671 SmallVectorImpl<MachineBasicBlock *> &TDBBs,
674 SmallPtrSet<MachineBasicBlock*, 8> Succs(TailBB->succ_begin(),
676 SmallVector<MachineBasicBlock*, 8> Preds(TailBB->pred_begin(),
679 for (SmallSetVector<MachineBasicBlock *, 8>::iterator PI = Preds.begin(),
681 MachineBasicBlock *PredBB = *PI;
689 MachineBasicBlock *PredTBB = nullptr, *PredFBB = nullptr;
698 MachineBasicBlock *NewTarget = *TailBB->succ_begin();
699 MachineBasicBlock *NextBB = std::next(MachineFunction::iterator(PredBB));
749 TailDuplicatePass::TailDuplicate(MachineBasicBlock *TailBB,
752 SmallVectorImpl<MachineBasicBlock *> &TDBBs,
766 SmallSetVector<MachineBasicBlock*, 8> Preds(TailBB->pred_begin(),
768 for (SmallSetVector<MachineBasicBlock *, 8>::iterator PI = Preds.begin(),
770 MachineBasicBlock *PredBB = *PI;
778 MachineBasicBlock *PredTBB, *PredFBB;
801 for (MachineBasicBlock::livein_iterator I = TailBB->livein_begin(),
816 MachineBasicBlock::instr_iterator I = TailBB->instr_begin();
830 MachineBasicBlock::iterator Loc = PredBB->getFirstTerminator();
846 for (MachineBasicBlock::succ_iterator I = TailBB->succ_begin(),
857 MachineBasicBlock *PrevBB = std::prev(MachineFunction::iterator(TailBB));
858 MachineBasicBlock *PriorTBB = nullptr, *PriorFBB = nullptr;
871 MachineBasicBlock::iterator I = TailBB->begin();
891 MachineBasicBlock::iterator Loc = PrevBB->getFirstTerminator();
932 for (SmallSetVector<MachineBasicBlock *, 8>::iterator PI = Preds.begin(),
934 MachineBasicBlock *PredBB = *PI;
944 MachineBasicBlock::iterator I = TailBB->begin();
952 MachineBasicBlock::iterator Loc = PredBB->getFirstTerminator();
965 void TailDuplicatePass::RemoveDeadBlock(MachineBasicBlock *MBB) {