• Home
  • Raw
  • Download

Lines Matching refs:MBB

198     void visitMachineBasicBlockBefore(const MachineBasicBlock *MBB);
204 void visitMachineBasicBlockAfter(const MachineBasicBlock *MBB);
211 void report(const char *msg, const MachineBasicBlock *MBB);
236 void markReachable(const MachineBasicBlock *MBB);
238 void checkPHIOps(const MachineBasicBlock *MBB);
438 void MachineVerifier::report(const char *msg, const MachineBasicBlock *MBB) { in report() argument
439 assert(MBB); in report()
440 report(msg, MBB->getParent()); in report()
441 errs() << "- basic block: BB#" << MBB->getNumber() in report()
442 << ' ' << MBB->getName() in report()
443 << " (" << (const void*)MBB << ')'; in report()
445 errs() << " [" << Indexes->getMBBStartIdx(MBB) in report()
446 << ';' << Indexes->getMBBEndIdx(MBB) << ')'; in report()
513 void MachineVerifier::markReachable(const MachineBasicBlock *MBB) { in markReachable() argument
514 BBInfo &MInfo = MBBInfoMap[MBB]; in markReachable()
517 for (MachineBasicBlock::const_succ_iterator SuI = MBB->succ_begin(), in markReachable()
518 SuE = MBB->succ_end(); SuI != SuE; ++SuI) in markReachable()
541 for (const auto &MBB : *MF) { in visitMachineFunctionBefore()
542 FunctionBlocks.insert(&MBB); in visitMachineFunctionBefore()
543 BBInfo &MInfo = MBBInfoMap[&MBB]; in visitMachineFunctionBefore()
545 MInfo.Preds.insert(MBB.pred_begin(), MBB.pred_end()); in visitMachineFunctionBefore()
546 if (MInfo.Preds.size() != MBB.pred_size()) in visitMachineFunctionBefore()
547 report("MBB has duplicate entries in its predecessor list.", &MBB); in visitMachineFunctionBefore()
549 MInfo.Succs.insert(MBB.succ_begin(), MBB.succ_end()); in visitMachineFunctionBefore()
550 if (MInfo.Succs.size() != MBB.succ_size()) in visitMachineFunctionBefore()
551 report("MBB has duplicate entries in its successor list.", &MBB); in visitMachineFunctionBefore()
571 MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) { in visitMachineBasicBlockBefore() argument
577 for (const auto &LI : MBB->liveins()) { in visitMachineBasicBlockBefore()
578 if (isAllocatable(LI.PhysReg) && !MBB->isEHPad() && in visitMachineBasicBlockBefore()
579 MBB->getIterator() != MBB->getParent()->begin()) { in visitMachineBasicBlockBefore()
580 report("MBB has allocable live-in, but isn't entry or landing-pad.", MBB); in visitMachineBasicBlockBefore()
587 for (MachineBasicBlock::const_succ_iterator I = MBB->succ_begin(), in visitMachineBasicBlockBefore()
588 E = MBB->succ_end(); I != E; ++I) { in visitMachineBasicBlockBefore()
592 report("MBB has successor that isn't part of the function.", MBB); in visitMachineBasicBlockBefore()
593 if (!MBBInfoMap[*I].Preds.count(MBB)) { in visitMachineBasicBlockBefore()
594 report("Inconsistent CFG", MBB); in visitMachineBasicBlockBefore()
601 for (MachineBasicBlock::const_pred_iterator I = MBB->pred_begin(), in visitMachineBasicBlockBefore()
602 E = MBB->pred_end(); I != E; ++I) { in visitMachineBasicBlockBefore()
604 report("MBB has predecessor that isn't part of the function.", MBB); in visitMachineBasicBlockBefore()
605 if (!MBBInfoMap[*I].Succs.count(MBB)) { in visitMachineBasicBlockBefore()
606 report("Inconsistent CFG", MBB); in visitMachineBasicBlockBefore()
613 const BasicBlock *BB = MBB->getBasicBlock(); in visitMachineBasicBlockBefore()
620 report("MBB has more than one landing pad successor", MBB); in visitMachineBasicBlockBefore()
625 if (!TII->analyzeBranch(*const_cast<MachineBasicBlock *>(MBB), TBB, FBB, in visitMachineBasicBlockBefore()
631 MachineFunction::const_iterator MBBI = MBB->getIterator(); in visitMachineBasicBlockBefore()
637 } else if (MBB->succ_size() == LandingPadSuccs.size()) { in visitMachineBasicBlockBefore()
641 } else if (MBB->succ_size() != 1+LandingPadSuccs.size()) { in visitMachineBasicBlockBefore()
643 "exactly one CFG successor!", MBB); in visitMachineBasicBlockBefore()
644 } else if (!MBB->isSuccessor(&*MBBI)) { in visitMachineBasicBlockBefore()
646 "differs from its CFG successor!", MBB); in visitMachineBasicBlockBefore()
648 if (!MBB->empty() && MBB->back().isBarrier() && in visitMachineBasicBlockBefore()
649 !TII->isPredicated(MBB->back())) { in visitMachineBasicBlockBefore()
651 "barrier instruction!", MBB); in visitMachineBasicBlockBefore()
655 MBB); in visitMachineBasicBlockBefore()
661 if (MBB->succ_size() != 1+LandingPadSuccs.size() && in visitMachineBasicBlockBefore()
662 (MBB->succ_size() != 1 || LandingPadSuccs.size() != 1 || in visitMachineBasicBlockBefore()
663 *MBB->succ_begin() != *LandingPadSuccs.begin())) { in visitMachineBasicBlockBefore()
665 "exactly one CFG successor!", MBB); in visitMachineBasicBlockBefore()
666 } else if (!MBB->isSuccessor(TBB)) { in visitMachineBasicBlockBefore()
668 "successor doesn't match the actual successor!", MBB); in visitMachineBasicBlockBefore()
670 if (MBB->empty()) { in visitMachineBasicBlockBefore()
672 "any instructions!", MBB); in visitMachineBasicBlockBefore()
673 } else if (!MBB->back().isBarrier()) { in visitMachineBasicBlockBefore()
675 "barrier instruction!", MBB); in visitMachineBasicBlockBefore()
676 } else if (!MBB->back().isTerminator()) { in visitMachineBasicBlockBefore()
678 "terminator instruction!", MBB); in visitMachineBasicBlockBefore()
682 MachineFunction::const_iterator MBBI = MBB->getIterator(); in visitMachineBasicBlockBefore()
685 report("MBB conditionally falls through out of function!", MBB); in visitMachineBasicBlockBefore()
686 } else if (MBB->succ_size() == 1) { in visitMachineBasicBlockBefore()
690 "one CFG successor!", MBB); in visitMachineBasicBlockBefore()
691 else if (TBB != *MBB->succ_begin()) in visitMachineBasicBlockBefore()
693 "successor don't match the actual successor!", MBB); in visitMachineBasicBlockBefore()
694 } else if (MBB->succ_size() != 2) { in visitMachineBasicBlockBefore()
696 "exactly two CFG successors!", MBB); in visitMachineBasicBlockBefore()
697 } else if (!matchPair(MBB->succ_begin(), TBB, &*MBBI)) { in visitMachineBasicBlockBefore()
699 "successors don't match the actual successors!", MBB); in visitMachineBasicBlockBefore()
701 if (MBB->empty()) { in visitMachineBasicBlockBefore()
703 "contain any instructions!", MBB); in visitMachineBasicBlockBefore()
704 } else if (MBB->back().isBarrier()) { in visitMachineBasicBlockBefore()
706 "barrier instruction!", MBB); in visitMachineBasicBlockBefore()
707 } else if (!MBB->back().isTerminator()) { in visitMachineBasicBlockBefore()
709 "isn't a terminator instruction!", MBB); in visitMachineBasicBlockBefore()
714 if (MBB->succ_size() == 1) { in visitMachineBasicBlockBefore()
718 "one CFG successor!", MBB); in visitMachineBasicBlockBefore()
719 else if (TBB != *MBB->succ_begin()) in visitMachineBasicBlockBefore()
721 "successor don't match the actual successor!", MBB); in visitMachineBasicBlockBefore()
722 } else if (MBB->succ_size() != 2) { in visitMachineBasicBlockBefore()
724 "exactly two CFG successors!", MBB); in visitMachineBasicBlockBefore()
725 } else if (!matchPair(MBB->succ_begin(), TBB, FBB)) { in visitMachineBasicBlockBefore()
727 "successors don't match the actual successors!", MBB); in visitMachineBasicBlockBefore()
729 if (MBB->empty()) { in visitMachineBasicBlockBefore()
731 "contain any instructions!", MBB); in visitMachineBasicBlockBefore()
732 } else if (!MBB->back().isBarrier()) { in visitMachineBasicBlockBefore()
734 "barrier instruction!", MBB); in visitMachineBasicBlockBefore()
735 } else if (!MBB->back().isTerminator()) { in visitMachineBasicBlockBefore()
737 "isn't a terminator instruction!", MBB); in visitMachineBasicBlockBefore()
741 "condition!", MBB); in visitMachineBasicBlockBefore()
744 report("AnalyzeBranch returned invalid data!", MBB); in visitMachineBasicBlockBefore()
749 for (const auto &LI : MBB->liveins()) { in visitMachineBasicBlockBefore()
751 report("MBB live-in list contains non-physical register", MBB); in visitMachineBasicBlockBefore()
773 lastIndex = Indexes->getMBBStartIdx(MBB); in visitMachineBasicBlockBefore()
1367 MachineVerifier::visitMachineBasicBlockAfter(const MachineBasicBlock *MBB) { in visitMachineBasicBlockAfter() argument
1368 MBBInfoMap[MBB].regsLiveOut = regsLive; in visitMachineBasicBlockAfter()
1372 SlotIndex stop = Indexes->getMBBEndIdx(MBB); in visitMachineBasicBlockAfter()
1374 report("Block ends before last instruction index", MBB); in visitMachineBasicBlockAfter()
1389 for (const auto &MBB : *MF) { in calcRegsPassed()
1390 BBInfo &MInfo = MBBInfoMap[&MBB]; in calcRegsPassed()
1393 for (MachineBasicBlock::const_succ_iterator SuI = MBB.succ_begin(), in calcRegsPassed()
1394 SuE = MBB.succ_end(); SuI != SuE; ++SuI) { in calcRegsPassed()
1404 const MachineBasicBlock *MBB = *todo.begin(); in calcRegsPassed() local
1405 todo.erase(MBB); in calcRegsPassed()
1406 BBInfo &MInfo = MBBInfoMap[MBB]; in calcRegsPassed()
1407 for (MachineBasicBlock::const_succ_iterator SuI = MBB->succ_begin(), in calcRegsPassed()
1408 SuE = MBB->succ_end(); SuI != SuE; ++SuI) { in calcRegsPassed()
1409 if (*SuI == MBB) in calcRegsPassed()
1424 for (const auto &MBB : *MF) { in calcRegsRequired()
1425 BBInfo &MInfo = MBBInfoMap[&MBB]; in calcRegsRequired()
1426 for (MachineBasicBlock::const_pred_iterator PrI = MBB.pred_begin(), in calcRegsRequired()
1427 PrE = MBB.pred_end(); PrI != PrE; ++PrI) { in calcRegsRequired()
1437 const MachineBasicBlock *MBB = *todo.begin(); in calcRegsRequired() local
1438 todo.erase(MBB); in calcRegsRequired()
1439 BBInfo &MInfo = MBBInfoMap[MBB]; in calcRegsRequired()
1440 for (MachineBasicBlock::const_pred_iterator PrI = MBB->pred_begin(), in calcRegsRequired()
1441 PrE = MBB->pred_end(); PrI != PrE; ++PrI) { in calcRegsRequired()
1442 if (*PrI == MBB) in calcRegsRequired()
1453 void MachineVerifier::checkPHIOps(const MachineBasicBlock *MBB) { in checkPHIOps() argument
1455 for (const auto &BBI : *MBB) { in checkPHIOps()
1463 if (!Pre->isSuccessor(MBB)) in checkPHIOps()
1473 for (MachineBasicBlock::const_pred_iterator PrI = MBB->pred_begin(), in checkPHIOps()
1474 PrE = MBB->pred_end(); PrI != PrE; ++PrI) { in checkPHIOps()
1487 for (const auto &MBB : *MF) { in visitMachineFunctionAfter()
1488 BBInfo &MInfo = MBBInfoMap[&MBB]; in visitMachineFunctionAfter()
1494 checkPHIOps(&MBB); in visitMachineFunctionAfter()
1501 for (const auto &MBB : *MF) { in visitMachineFunctionAfter()
1502 BBInfo &MInfo = MBBInfoMap[&MBB]; in visitMachineFunctionAfter()
1507 report("Virtual register killed in block, but needed live out.", &MBB); in visitMachineFunctionAfter()
1534 for (const auto &MBB : *MF) { in verifyLiveVariables()
1535 BBInfo &MInfo = MBBInfoMap[&MBB]; in verifyLiveVariables()
1539 if (!VI.AliveBlocks.test(MBB.getNumber())) { in verifyLiveVariables()
1540 report("LiveVariables: Block missing from AliveBlocks", &MBB); in verifyLiveVariables()
1545 if (VI.AliveBlocks.test(MBB.getNumber())) { in verifyLiveVariables()
1546 report("LiveVariables: Block should not be in AliveBlocks", &MBB); in verifyLiveVariables()
1603 const MachineBasicBlock *MBB = LiveInts->getMBBFromIndex(VNI->def); in verifyLiveRangeValue() local
1604 if (!MBB) { in verifyLiveRangeValue()
1612 if (VNI->def != LiveInts->getMBBStartIdx(MBB)) { in verifyLiveRangeValue()
1613 report("PHIDef VNInfo is not defined at MBB start", MBB); in verifyLiveRangeValue()
1623 report("No instruction at VNInfo def index", MBB); in verifyLiveRangeValue()
1661 report("Early clobber def must be at an early-clobber slot", MBB); in verifyLiveRangeValue()
1666 report("Non-PHI, non-early clobber def must be at a register slot", MBB); in verifyLiveRangeValue()
1694 const MachineBasicBlock *MBB = LiveInts->getMBBFromIndex(S.start); in verifyLiveRangeSegment() local
1695 if (!MBB) { in verifyLiveRangeSegment()
1701 SlotIndex MBBStartIdx = LiveInts->getMBBStartIdx(MBB); in verifyLiveRangeSegment()
1703 report("Live segment must begin at MBB entry or valno def", MBB); in verifyLiveRangeSegment()
1813 MachineFunction::const_iterator MFI = MBB->getIterator(); in verifyLiveRangeSegment()
1817 if (MBB == EndMBB) in verifyLiveRangeSegment()
1960 const MachineBasicBlock *MBB = *DFI; in verifyStackFrame() local
1975 for (const auto &I : *MBB) { in verifyStackFrame()
2007 SPState[MBB->getNumber()] = BBState; in verifyStackFrame()
2011 for (MachineBasicBlock::const_pred_iterator I = MBB->pred_begin(), in verifyStackFrame()
2012 E = MBB->pred_end(); I != E; ++I) { in verifyStackFrame()
2016 report("The exit stack state of a predecessor is inconsistent.", MBB); in verifyStackFrame()
2020 << "), while BB#" << MBB->getNumber() << " has entry state (" in verifyStackFrame()
2027 for (MachineBasicBlock::const_succ_iterator I = MBB->succ_begin(), in verifyStackFrame()
2028 E = MBB->succ_end(); I != E; ++I) { in verifyStackFrame()
2032 report("The entry stack state of a successor is inconsistent.", MBB); in verifyStackFrame()
2036 << "), while BB#" << MBB->getNumber() << " has exit state (" in verifyStackFrame()
2042 if (!MBB->empty() && MBB->back().isReturn()) { in verifyStackFrame()
2044 report("A return block ends with a FrameSetup.", MBB); in verifyStackFrame()
2046 report("A return block ends with a nonzero stack adjustment.", MBB); in verifyStackFrame()