Home | History | Annotate | Download | only in CodeGen

Lines Matching defs:MBB

50                                             const MachineBasicBlock &MBB) {
51 unsigned Num = MBB.getNumber();
53 SlotIndex MBBEnd = LIS.getMBBEndIdx(&MBB);
56 for (const MachineBasicBlock *SMBB : MBB.successors())
63 MachineBasicBlock::const_iterator FirstTerm = MBB.getFirstTerminator();
64 if (FirstTerm == MBB.end())
74 for (MachineBasicBlock::const_iterator I = MBB.end(), E = MBB.begin();
94 // Find the value leaving MBB.
99 // If the value leaving MBB was defined after the call in MBB, it can't
113 MachineBasicBlock &MBB) {
114 SlotIndex LIP = getLastInsertPoint(CurLI, MBB);
115 if (LIP == LIS.getMBBEndIdx(&MBB))
116 return MBB.end();
204 BI.MBB = &*MFI;
206 std::tie(Start, Stop) = LIS.getSlotIndexes()->getMBBRange(BI.MBB);
213 ThroughBlocks.set(BI.MBB->getNumber());
227 // LVI is the first live segment overlapping MBB.
444 MachineBasicBlock &MBB,
462 Def = Edit->rematerializeAt(MBB, I, LI->reg, RM, TRI, Late);
466 CopyMI = BuildMI(MBB, I, DebugLoc(), TII.get(TargetOpcode::COPY), LI->reg)
532 SlotIndex SplitEditor::enterIntvAtEnd(MachineBasicBlock &MBB) {
534 SlotIndex End = LIS.getMBBEndIdx(&MBB);
536 DEBUG(dbgs() << " enterIntvAtEnd BB#" << MBB.getNumber() << ", " << Last);
543 VNInfo *VNI = defFromParent(OpenIdx, ParentVNI, Last, MBB,
544 SA.getLastSplitPointIter(&MBB));
550 /// useIntv - indicate that all instructions in MBB should use OpenLI.
551 void SplitEditor::useIntv(const MachineBasicBlock &MBB) {
552 useIntv(LIS.getMBBStartIdx(&MBB), LIS.getMBBEndIdx(&MBB));
612 SlotIndex SplitEditor::leaveIntvAtTop(MachineBasicBlock &MBB) {
614 SlotIndex Start = LIS.getMBBStartIdx(&MBB);
615 DEBUG(dbgs() << " leaveIntvAtTop BB#" << MBB.getNumber() << ", " << Start);
623 VNInfo *VNI = defFromParent(0, ParentVNI, Start, MBB,
624 MBB.SkipPHIsAndLabels(MBB.begin()));
661 MachineBasicBlock *MBB = MI->getParent();
664 do AtBegin = MBBI == MBB->begin();
693 SplitEditor::findShallowDominator(MachineBasicBlock *MBB,
695 if (MBB == DefMBB)
696 return MBB;
697 assert(MDT.dominates(DefMBB, MBB) && "MBB must be dominated by the def.");
704 MachineBasicBlock *BestMBB = MBB;
708 const MachineLoop *Loop = Loops.getLoopFor(MBB);
710 // MBB isn't in a loop, it doesn't get any better. All dominators have a
714 << MBB->getNumber() << " at depth 0\n");
715 return MBB;
721 << MBB->getNumber() << " in the same loop\n");
722 return MBB;
728 BestMBB = MBB;
731 << MBB->getNumber() << " at depth " << Depth << '\n');
742 MBB = IDom->getBlock();
972 MachineFunction::iterator MBB = LIS.getMBBFromIndex(Start)->getIterator();
974 std::tie(BlockStart, BlockEnd) = LIS.getSlotIndexes()->getMBBRange(&*MBB);
980 DEBUG(dbgs() << ':' << VNI->id << "*BB#" << MBB->getNumber());
981 // MBB has its own def. Is it also live-out?
983 LRC.setLiveOutValue(&*MBB, VNI);
986 ++MBB;
993 DEBUG(dbgs() << ">BB#" << MBB->getNumber());
994 BlockEnd = LIS.getMBBEndIdx(&*MBB);
1001 LRC.setLiveOutValue(&*MBB, VNI); // Live-out as well.
1006 LRC.addLiveInBlock(LR, MDT[&*MBB], End);
1009 LRC.addLiveInBlock(LR, MDT[&*MBB]);
1010 LRC.setLiveOutValue(&*MBB, nullptr);
1014 ++MBB;
1046 MachineBasicBlock *MBB = LIS.getMBBFromIndex(PHIVNI->def);
1047 for (MachineBasicBlock::pred_iterator PI = MBB->pred_begin(),
1048 PE = MBB->pred_end(); PI != PE; ++PI) {
1245 SlotIndex LastSplitPoint = SA.getLastSplitPoint(BI.MBB->getNumber());
1286 MachineBasicBlock *MBB = VRM.getMachineFunction().getBlockNumbered(MBBNum);
1296 SlotIndex Idx = leaveIntvAtTop(*MBB);
1310 SlotIndex Idx = enterIntvAtEnd(*MBB);
1345 Idx = enterIntvAtEnd(*MBB);
1377 std::tie(Start, Stop) = LIS.getSlotIndexes()->getMBBRange(BI.MBB);
1379 DEBUG(dbgs() << "BB#" << BI.MBB->getNumber() << " [" << Start << ';' << Stop
1400 SlotIndex LSP = SA.getLastSplitPoint(BI.MBB->getNumber());
1469 std::tie(Start, Stop) = LIS.getSlotIndexes()->getMBBRange(BI.MBB);
1471 DEBUG(dbgs() << "BB#" << BI.MBB->getNumber() << " [" << Start << ';' << Stop
1476 SlotIndex LSP = SA.getLastSplitPoint(BI.MBB->getNumber());