Lines Matching refs:MBB

68     unsigned postOffset(const MachineBasicBlock &MBB) const {  in postOffset()
70 const Align Alignment = MBB.getAlignment(); in postOffset()
71 const Align ParentAlign = MBB.getParent()->getAlignment(); in postOffset()
110 uint64_t computeBlockSize(const MachineBasicBlock &MBB) const;
137 for (MachineBasicBlock &MBB : *MF) { in INITIALIZE_PASS()
138 const unsigned Num = MBB.getNumber(); in INITIALIZE_PASS()
139 assert(!Num || BlockInfo[PrevNum].postOffset(MBB) <= BlockInfo[Num].Offset); in INITIALIZE_PASS()
140 assert(BlockInfo[Num].Size == computeBlockSize(MBB)); in INITIALIZE_PASS()
144 for (MachineBasicBlock &MBB : *MF) { in INITIALIZE_PASS()
145 for (MachineBasicBlock::iterator J = MBB.getFirstTerminator(); in INITIALIZE_PASS()
146 J != MBB.end(); J = std::next(J)) { in INITIALIZE_PASS()
154 RelaxedUnconditionals.contains({&MBB, DestBB})); in INITIALIZE_PASS()
163 for (auto &MBB : *MF) { in dumpBBs()
164 const BasicBlockInfo &BBI = BlockInfo[MBB.getNumber()]; in dumpBBs()
165 dbgs() << format("%%bb.%u\toffset=%08x\t", MBB.getNumber(), BBI.Offset) in dumpBBs()
185 for (MachineBasicBlock &MBB : *MF) { in scanFunction()
186 BlockInfo[MBB.getNumber()].Size = computeBlockSize(MBB); in scanFunction()
188 if (MBB.getSectionID() != MBBSectionID::ColdSectionID) in scanFunction()
189 TrampolineInsertionPoint = &MBB; in scanFunction()
202 uint64_t BranchRelaxation::computeBlockSize(const MachineBasicBlock &MBB) const { in computeBlockSize()
204 for (const MachineInstr &MI : MBB) in computeBlockSize()
213 const MachineBasicBlock *MBB = MI.getParent(); in getInstrOffset() local
218 unsigned Offset = BlockInfo[MBB->getNumber()].Offset; in getInstrOffset()
221 for (MachineBasicBlock::const_iterator I = MBB->begin(); &*I != &MI; ++I) { in getInstrOffset()
222 assert(I != MBB->end() && "Didn't find MI in its own basic block?"); in getInstrOffset()
231 for (auto &MBB : in adjustBlockOffsets() local
233 unsigned Num = MBB.getNumber(); in adjustBlockOffsets()
236 BlockInfo[Num].Offset = BlockInfo[PrevNum].postOffset(MBB); in adjustBlockOffsets()
358 MachineBasicBlock *MBB = MI.getParent(); in fixupConditionalBranch() local
363 auto insertUncondBranch = [&](MachineBasicBlock *MBB, in fixupConditionalBranch()
365 unsigned &BBSize = BlockInfo[MBB->getNumber()].Size; in fixupConditionalBranch()
367 TII->insertUnconditionalBranch(*MBB, DestBB, DL, &NewBrSize); in fixupConditionalBranch()
370 auto insertBranch = [&](MachineBasicBlock *MBB, MachineBasicBlock *TBB, in fixupConditionalBranch() argument
373 unsigned &BBSize = BlockInfo[MBB->getNumber()].Size; in fixupConditionalBranch()
375 TII->insertBranch(*MBB, TBB, FBB, Cond, DL, &NewBrSize); in fixupConditionalBranch()
378 auto removeBranch = [&](MachineBasicBlock *MBB) { in fixupConditionalBranch() argument
379 unsigned &BBSize = BlockInfo[MBB->getNumber()].Size; in fixupConditionalBranch()
381 TII->removeBranch(*MBB, &RemovedSize); in fixupConditionalBranch()
385 auto finalizeBlockChanges = [&](MachineBasicBlock *MBB, in fixupConditionalBranch()
388 adjustBlockOffsets(*MBB); in fixupConditionalBranch()
395 bool Fail = TII->analyzeBranch(*MBB, TBB, FBB, Cond); in fixupConditionalBranch()
409 if (MBB->getSectionID() != TBB->getSectionID() && in fixupConditionalBranch()
414 createNewBlockAfter(*TrampolineInsertionPoint, MBB->getBasicBlock()); in fixupConditionalBranch()
423 MBB->replaceSuccessor(TBB, NewBB); in fixupConditionalBranch()
427 removeBranch(MBB); in fixupConditionalBranch()
428 insertBranch(MBB, NewBB, FBB, Cond); in fixupConditionalBranch()
431 finalizeBlockChanges(MBB, NewBB); in fixupConditionalBranch()
437 << printMBBReference(*MBB) << " to " << printMBBReference(*TBB) in fixupConditionalBranch()
463 << MBB->back()); in fixupConditionalBranch()
465 removeBranch(MBB); in fixupConditionalBranch()
466 insertBranch(MBB, FBB, TBB, Cond); in fixupConditionalBranch()
467 finalizeBlockChanges(MBB, nullptr); in fixupConditionalBranch()
473 NewBB = createNewBlockAfter(*MBB); in fixupConditionalBranch()
478 MBB->replaceSuccessor(FBB, NewBB); in fixupConditionalBranch()
484 MachineBasicBlock &NextBB = *std::next(MachineFunction::iterator(MBB)); in fixupConditionalBranch()
490 removeBranch(MBB); in fixupConditionalBranch()
492 insertBranch(MBB, &NextBB, TBB, Cond); in fixupConditionalBranch()
494 finalizeBlockChanges(MBB, NewBB); in fixupConditionalBranch()
500 << " Insert a new BB after " << MBB->back()); in fixupConditionalBranch()
503 FBB = &(*std::next(MachineFunction::iterator(MBB))); in fixupConditionalBranch()
516 NewBB = createNewBlockAfter(*MBB); in fixupConditionalBranch()
527 MBB->replaceSuccessor(TBB, NewBB); in fixupConditionalBranch()
531 removeBranch(MBB); in fixupConditionalBranch()
532 insertBranch(MBB, NewBB, FBB, Cond); in fixupConditionalBranch()
534 finalizeBlockChanges(MBB, NewBB); in fixupConditionalBranch()
539 MachineBasicBlock *MBB = MI.getParent(); in fixupUnconditionalBranch() local
548 MI.getOpcode(), MBB->getSectionID() != DestBB->getSectionID() in fixupUnconditionalBranch()
552 BlockInfo[MBB->getNumber()].Size -= OldBrSize; in fixupUnconditionalBranch()
554 MachineBasicBlock *BranchBB = MBB; in fixupUnconditionalBranch()
558 if (!MBB->empty()) { in fixupUnconditionalBranch()
559 BranchBB = createNewBlockAfter(*MBB); in fixupUnconditionalBranch()
562 for (const MachineBasicBlock *Succ : MBB->successors()) { in fixupUnconditionalBranch()
569 MBB->replaceSuccessor(DestBB, BranchBB); in fixupUnconditionalBranch()
570 if (TrampolineInsertionPoint == MBB) in fixupUnconditionalBranch()
593 adjustBlockOffsets(*MBB); in fixupUnconditionalBranch()
599 if (MBB->getSectionID() == MBBSectionID::ColdSectionID && in fixupUnconditionalBranch()
661 for (MachineBasicBlock &MBB : *MF) { in relaxBranchInstructions()
663 MachineBasicBlock::iterator Last = MBB.getLastNonDebugInstr(); in relaxBranchInstructions()
664 if (Last == MBB.end()) in relaxBranchInstructions()
677 !RelaxedUnconditionals.contains({&MBB, DestBB})) { in relaxBranchInstructions()
687 for (MachineBasicBlock::iterator J = MBB.getFirstTerminator(); in relaxBranchInstructions()
688 J != MBB.end(); J = Next) { in relaxBranchInstructions()
702 if (Next != MBB.end() && Next->isConditionalBranch()) { in relaxBranchInstructions()
716 Next = MBB.getFirstTerminator(); in relaxBranchInstructions()