Home | History | Annotate | Download | only in CodeGen

Lines Matching defs:MBB

58   const MachineBasicBlock *MBB = MF.getBlockNumbered(Num);
60 const MachineBasicBlock *LPad = MBB->getLandingPadSuccessor();
62 SlotIndex MBBEnd = LIS.getMBBEndIdx(MBB);
67 MachineBasicBlock::const_iterator FirstTerm = MBB->getFirstTerminator();
68 if (FirstTerm == MBB->end())
78 for (MachineBasicBlock::const_iterator I = MBB->end(), E = MBB->begin();
93 // Find the value leaving MBB.
98 // If the value leaving MBB was defined after the call in MBB, it can't
111 SplitAnalysis::getLastSplitPointIter(MachineBasicBlock *MBB) {
112 SlotIndex LSP = getLastSplitPoint(MBB->getNumber());
113 if (LSP == LIS.getMBBEndIdx(MBB))
114 return MBB->end();
184 BI.MBB = &*MFI;
186 std::tie(Start, Stop) = LIS.getSlotIndexes()->getMBBRange(BI.MBB);
193 ThroughBlocks.set(BI.MBB->getNumber());
207 // LVI is the first live segment overlapping MBB.
422 MachineBasicBlock &MBB,
435 Def = Edit->rematerializeAt(MBB, I, LI->reg, RM, TRI, Late);
439 CopyMI = BuildMI(MBB, I, DebugLoc(), TII.get(TargetOpcode::COPY), LI->reg)
504 SlotIndex SplitEditor::enterIntvAtEnd(MachineBasicBlock &MBB) {
506 SlotIndex End = LIS.getMBBEndIdx(&MBB);
508 DEBUG(dbgs() << " enterIntvAtEnd BB#" << MBB.getNumber() << ", " << Last);
515 VNInfo *VNI = defFromParent(OpenIdx, ParentVNI, Last, MBB,
516 SA.getLastSplitPointIter(&MBB));
522 /// useIntv - indicate that all instructions in MBB should use OpenLI.
523 void SplitEditor::useIntv(const MachineBasicBlock &MBB) {
524 useIntv(LIS.getMBBStartIdx(&MBB), LIS.getMBBEndIdx(&MBB));
584 SlotIndex SplitEditor::leaveIntvAtTop(MachineBasicBlock &MBB) {
586 SlotIndex Start = LIS.getMBBStartIdx(&MBB);
587 DEBUG(dbgs() << " leaveIntvAtTop BB#" << MBB.getNumber() << ", " << Start);
595 VNInfo *VNI = defFromParent(0, ParentVNI, Start, MBB,
596 MBB.SkipPHIsAndLabels(MBB.begin()));
633 MachineBasicBlock *MBB = MI->getParent();
636 do AtBegin = MBBI == MBB->begin();
665 SplitEditor::findShallowDominator(MachineBasicBlock *MBB,
667 if (MBB == DefMBB)
668 return MBB;
669 assert(MDT.dominates(DefMBB, MBB) && "MBB must be dominated by the def.");
676 MachineBasicBlock *BestMBB = MBB;
680 const MachineLoop *Loop = Loops.getLoopFor(MBB);
682 // MBB isn't in a loop, it doesn't get any better. All dominators have a
686 << MBB->getNumber() << " at depth 0\n");
687 return MBB;
693 << MBB->getNumber() << " in the same loop\n");
694 return MBB;
700 BestMBB = MBB;
703 << MBB->getNumber() << " at depth " << Depth << '\n');
714 MBB = IDom->getBlock();
870 MachineFunction::iterator MBB = LIS.getMBBFromIndex(Start)->getIterator();
872 std::tie(BlockStart, BlockEnd) = LIS.getSlotIndexes()->getMBBRange(&*MBB);
878 DEBUG(dbgs() << ':' << VNI->id << "*BB#" << MBB->getNumber());
879 // MBB has its own def. Is it also live-out?
881 LRC.setLiveOutValue(&*MBB, VNI);
884 ++MBB;
891 DEBUG(dbgs() << ">BB#" << MBB->getNumber());
892 BlockEnd = LIS.getMBBEndIdx(&*MBB);
899 LRC.setLiveOutValue(&*MBB, VNI); // Live-out as well.
904 LRC.addLiveInBlock(LR, MDT[&*MBB], End);
907 LRC.addLiveInBlock(LR, MDT[&*MBB]);
908 LRC.setLiveOutValue(&*MBB, nullptr);
912 ++MBB;
934 MachineBasicBlock *MBB = LIS.getMBBFromIndex(PHIVNI->def);
935 for (MachineBasicBlock::pred_iterator PI = MBB->pred_begin(),
936 PE = MBB->pred_end(); PI != PE; ++PI) {
1131 SlotIndex LastSplitPoint = SA.getLastSplitPoint(BI.MBB->getNumber());
1172 MachineBasicBlock *MBB = VRM.getMachineFunction().getBlockNumbered(MBBNum);
1182 SlotIndex Idx = leaveIntvAtTop(*MBB);
1196 SlotIndex Idx = enterIntvAtEnd(*MBB);
1231 Idx = enterIntvAtEnd(*MBB);
1263 std::tie(Start, Stop) = LIS.getSlotIndexes()->getMBBRange(BI.MBB);
1265 DEBUG(dbgs() << "BB#" << BI.MBB->getNumber() << " [" << Start << ';' << Stop
1286 SlotIndex LSP = SA.getLastSplitPoint(BI.MBB->getNumber());
1355 std::tie(Start, Stop) = LIS.getSlotIndexes()->getMBBRange(BI.MBB);
1357 DEBUG(dbgs() << "BB#" << BI.MBB->getNumber() << " [" << Start << ';' << Stop
1362 SlotIndex LSP = SA.getLastSplitPoint(BI.MBB->getNumber());