reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
30 MachineFunction &MF = *Loop->getParent(); 31 MachineBasicBlock *Preheader = *Loop->pred_begin(); 32 if (Preheader == Loop) 33 Preheader = *std::next(Loop->pred_begin()); 34 MachineBasicBlock *Exit = *Loop->succ_begin(); 35 if (Exit == Loop) 36 Exit = *std::next(Loop->succ_begin()); 38 MachineBasicBlock *NewBB = MF.CreateMachineBasicBlock(Loop->getBasicBlock()); 40 MF.insert(Loop->getIterator(), NewBB); 42 MF.insert(std::next(Loop->getIterator()), NewBB); 47 for (MachineInstr &MI : *Loop) { 64 if (Use.getParent()->getParent() != Loop) 84 MachineInstr &OrigPhi = findEquivalentInstruction(MI, Loop); 107 Preheader->replaceSuccessor(Loop, NewBB); 108 NewBB->addSuccessor(Loop); 109 Loop->replacePhiUsesWith(Preheader, NewBB); 113 TII->insertBranch(*NewBB, Loop, nullptr, {}, DL); 115 Loop->replaceSuccessor(Exit, NewBB); 116 Exit->replacePhiUsesWith(Loop, NewBB); 121 bool CanAnalyzeBr = !TII->analyzeBranch(*Loop, TBB, FBB, Cond); 124 TII->removeBranch(*Loop); 125 TII->insertBranch(*Loop, TBB == Exit ? NewBB : TBB,