Lines Matching defs:MBB
51 void ReachingDefAnalysis::enterBasicBlock(MachineBasicBlock *MBB) {
52 unsigned MBBNumber = MBB->getNumber();
60 // Set up LiveRegs to represent registers entering MBB.
66 if (MBB->pred_empty()) {
67 for (const auto &LI : MBB->liveins()) {
78 LLVM_DEBUG(dbgs() << printMBBReference(*MBB) << ": entry\n");
83 for (MachineBasicBlock *pred : MBB->predecessors()) {
103 void ReachingDefAnalysis::leaveBasicBlock(MachineBasicBlock *MBB) {
105 unsigned MBBNumber = MBB->getNumber();
108 // Save register clearances at end of MBB - used by enterBasicBlock().
147 void ReachingDefAnalysis::reprocessBasicBlock(MachineBasicBlock *MBB) {
148 unsigned MBBNumber = MBB->getNumber();
154 instructionsWithoutDebug(MBB->instr_begin(), MBB->instr_end());
159 for (MachineBasicBlock *pred : MBB->predecessors()) {
194 MachineBasicBlock *MBB = TraversedMBB.MBB;
195 LLVM_DEBUG(dbgs() << printMBBReference(*MBB)
200 // Reprocess MBB that is part of a loop.
201 reprocessBasicBlock(MBB);
205 enterBasicBlock(MBB);
207 instructionsWithoutDebug(MBB->instr_begin(), MBB->instr_end()))
209 leaveBasicBlock(MBB);
300 MachineInstr *ReachingDefAnalysis::getInstFromId(MachineBasicBlock *MBB,
302 assert(static_cast<size_t>(MBB->getNumber()) < MBBReachingDefs.size() &&
304 assert(InstId < static_cast<int>(MBB->size()) &&
310 for (auto &MI : *MBB) {
333 MachineBasicBlock *MBB = Def->getParent();
335 while (++MI != MBB->end()) {
355 bool ReachingDefAnalysis::getLiveInUses(MachineBasicBlock *MBB,
359 instructionsWithoutDebug(MBB->instr_begin(), MBB->instr_end())) {
368 auto Last = MBB->getLastNonDebugInstr();
369 if (Last == MBB->end())
376 MachineBasicBlock *MBB = MI->getParent();
386 SmallVector<MachineBasicBlock *, 4> ToVisit(MBB->successors());
389 MachineBasicBlock *MBB = ToVisit.pop_back_val();
390 if (Visited.count(MBB) || !MBB->isLiveIn(PhysReg))
392 if (getLiveInUses(MBB, PhysReg, Uses))
393 llvm::append_range(ToVisit, MBB->successors());
394 Visited.insert(MBB);
407 for (auto *MBB : MI->getParent()->predecessors())
408 getLiveOuts(MBB, PhysReg, Defs);
411 void ReachingDefAnalysis::getLiveOuts(MachineBasicBlock *MBB,
414 getLiveOuts(MBB, PhysReg, Defs, VisitedBBs);
417 void ReachingDefAnalysis::getLiveOuts(MachineBasicBlock *MBB,
420 if (VisitedBBs.count(MBB))
423 VisitedBBs.insert(MBB);
425 LiveRegs.addLiveOuts(*MBB);
429 if (auto *Def = getLocalLiveOutMIDef(MBB, PhysReg))
432 for (auto *Pred : MBB->predecessors())
471 MachineBasicBlock *MBB = MI->getParent();
473 LiveRegs.addLiveOuts(*MBB);
482 instructionsWithoutDebug(MBB->instr_rbegin(), MBB->instr_rend())) {
492 MachineBasicBlock *MBB = MI->getParent();
493 auto Last = MBB->getLastNonDebugInstr();
494 if (Last != MBB->end() &&
498 if (auto *Def = getLocalLiveOutMIDef(MBB, PhysReg))
506 MachineBasicBlock *MBB = MI->getParent();
508 LiveRegs.addLiveOuts(*MBB);
512 auto Last = MBB->getLastNonDebugInstr();
514 if (Last != MBB->end() && getReachingDef(&*Last, PhysReg) != Def)
526 ReachingDefAnalysis::getLocalLiveOutMIDef(MachineBasicBlock *MBB,
529 LiveRegs.addLiveOuts(*MBB);
533 auto Last = MBB->getLastNonDebugInstr();
534 if (Last == MBB->end())
542 return Def < 0 ? nullptr : getInstFromId(MBB, Def);
699 MachineBasicBlock *MBB = MI->getParent();
703 for (auto E = MBB->end(); I != E; ++I) {