LLVM API Documentation
#include <MachineBasicBlock.h>
Definition at line 62 of file MachineBasicBlock.h.
Definition at line 206 of file MachineBasicBlock.h.
typedef bundle_iterator<const MachineInstr,const_instr_iterator> llvm::MachineBasicBlock::const_iterator |
Definition at line 214 of file MachineBasicBlock.h.
typedef std::vector<MachineBasicBlock *>::const_iterator llvm::MachineBasicBlock::const_pred_iterator |
Definition at line 259 of file MachineBasicBlock.h.
typedef std::vector<MachineBasicBlock *>::const_reverse_iterator llvm::MachineBasicBlock::const_pred_reverse_iterator |
Definition at line 265 of file MachineBasicBlock.h.
typedef std::reverse_iterator<const_instr_iterator> llvm::MachineBasicBlock::const_reverse_instr_iterator |
Definition at line 209 of file MachineBasicBlock.h.
typedef std::reverse_iterator<const_iterator> llvm::MachineBasicBlock::const_reverse_iterator |
Definition at line 215 of file MachineBasicBlock.h.
typedef std::vector<MachineBasicBlock *>::const_iterator llvm::MachineBasicBlock::const_succ_iterator |
Definition at line 261 of file MachineBasicBlock.h.
typedef std::vector<MachineBasicBlock *>::const_reverse_iterator llvm::MachineBasicBlock::const_succ_reverse_iterator |
Definition at line 269 of file MachineBasicBlock.h.
Definition at line 205 of file MachineBasicBlock.h.
Definition at line 212 of file MachineBasicBlock.h.
typedef std::vector<unsigned>::const_iterator llvm::MachineBasicBlock::livein_iterator |
Definition at line 337 of file MachineBasicBlock.h.
typedef std::vector<MachineBasicBlock *>::iterator llvm::MachineBasicBlock::pred_iterator |
Definition at line 258 of file MachineBasicBlock.h.
typedef std::vector<MachineBasicBlock *>::reverse_iterator llvm::MachineBasicBlock::pred_reverse_iterator |
Definition at line 263 of file MachineBasicBlock.h.
typedef std::reverse_iterator<instr_iterator> llvm::MachineBasicBlock::reverse_instr_iterator |
Definition at line 207 of file MachineBasicBlock.h.
typedef std::reverse_iterator<iterator> llvm::MachineBasicBlock::reverse_iterator |
Definition at line 216 of file MachineBasicBlock.h.
typedef std::vector<MachineBasicBlock *>::iterator llvm::MachineBasicBlock::succ_iterator |
Definition at line 260 of file MachineBasicBlock.h.
typedef std::vector<MachineBasicBlock *>::reverse_iterator llvm::MachineBasicBlock::succ_reverse_iterator |
Definition at line 267 of file MachineBasicBlock.h.
Possible outcome of a register liveness query to computeRegisterLiveness()
Definition at line 612 of file MachineBasicBlock.h.
void llvm::MachineBasicBlock::addLiveIn | ( | unsigned | Reg | ) | [inline] |
addLiveIn - Add the specified register as a live in. Note that it is an error to add the same register to the same set more than once.
Definition at line 320 of file MachineBasicBlock.h.
Referenced by addLiveIn(), addLiveInRegs(), addSavedGPR(), llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::ARMFrameLowering::adjustForSegmentedStacks(), emitAlignedDPRCS2Spills(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::MachineRegisterInfo::EmitLiveInCopies(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), EmitXBegin(), llvm::HexagonFrameLowering::restoreCalleeSavedRegisters(), llvm::HexagonFrameLowering::spillCalleeSavedRegisters(), llvm::SystemZFrameLowering::spillCalleeSavedRegisters(), llvm::Mips16FrameLowering::spillCalleeSavedRegisters(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), llvm::XCoreFrameLowering::spillCalleeSavedRegisters(), llvm::MSP430FrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), and SplitCriticalEdge().
unsigned MachineBasicBlock::addLiveIn | ( | unsigned | PhysReg, |
const TargetRegisterClass * | RC | ||
) |
Add PhysReg as live in to this block, and ensure that there is a copy of PhysReg to a virtual register of class RC. Return the virtual register that is a copy of the live in PhysReg.
Definition at line 354 of file MachineBasicBlock.cpp.
References addLiveIn(), begin(), llvm::BuildMI(), llvm::MachineRegisterInfo::constrainRegClass(), llvm::TargetOpcode::COPY, llvm::MachineRegisterInfo::createVirtualRegister(), end(), front(), llvm::MCInstrInfo::get(), llvm::TargetSubtargetInfo::getInstrInfo(), getParent(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), I, isLandingPad(), isLiveIn(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::RegState::Kill, llvm_unreachable, SkipPHIsAndLabels(), and TII.
void MachineBasicBlock::addSuccessor | ( | MachineBasicBlock * | succ, |
uint32_t | weight = 0 |
||
) |
addSuccessor - Add succ as a successor of this MachineBasicBlock. The Predecessors list of succ is automatically updated. WEIGHT parameter is stored in Weights list and it may be used by MachineBranchProbabilityInfo analysis to calculate branch probability.
Note that duplicate Machine CFG edges are not allowed.
Definition at line 490 of file MachineBasicBlock.cpp.
Referenced by llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::PPCTargetLowering::EmitAtomicBinary(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::XCoreTargetLowering::EmitInstrWithCustomInserter(), llvm::MSP430TargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitPartwordAtomicBinary(), llvm::MSP430TargetLowering::EmitShiftInstr(), EmitXBegin(), llvm::SparcTargetLowering::expandAtomicRMW(), llvm::SparcTargetLowering::expandSelectCC(), llvm::FastISel::fastEmitBranch(), llvm::TargetInstrInfo::ReplaceTailWithBranchTo(), SplitCriticalEdge(), transferSuccessors(), and transferSuccessorsAndUpdatePHIs().
MachineInstr& llvm::MachineBasicBlock::back | ( | ) | [inline] |
Definition at line 228 of file MachineBasicBlock.h.
References end().
Referenced by BBIsJumpedOver(), canFallThrough(), HandleVRSaveUpdate(), llvm::LiveVariables::MarkVirtRegAliveInBlock(), ProcessSourceNode(), ProfitableToMerge(), llvm::CriticalAntiDepBreaker::StartBlock(), llvm::AggressiveAntiDepBreaker::StartBlock(), and llvm::FastISel::startNewBlock().
const MachineInstr& llvm::MachineBasicBlock::back | ( | ) | const [inline] |
Definition at line 230 of file MachineBasicBlock.h.
References end().
iterator llvm::MachineBasicBlock::begin | ( | ) | [inline] |
Definition at line 241 of file MachineBasicBlock.h.
References instr_begin().
Referenced by addLiveIn(), llvm::LiveVariables::addNewBlock(), llvm::XCoreInstrInfo::AnalyzeBranch(), llvm::NVPTXInstrInfo::AnalyzeBranch(), llvm::SparcInstrInfo::AnalyzeBranch(), llvm::MSP430InstrInfo::AnalyzeBranch(), llvm::ARMBaseInstrInfo::AnalyzeBranch(), llvm::PPCInstrInfo::AnalyzeBranch(), llvm::AArch64InstrInfo::AnalyzeBranch(), llvm::SystemZInstrInfo::AnalyzeBranch(), llvm::R600InstrInfo::AnalyzeBranch(), llvm::MachineInstrSpan::begin(), bothUsedInPHI(), ComputeCommonTailLength(), computeRegisterLiveness(), CountTerminators(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::CreateEmptyPHI(), llvm::LexicalScopes::dominates(), llvm::MachineDominatorTree::dominates(), llvm::X86FrameLowering::eliminateCallFramePseudoInstr(), llvm::PPCTargetLowering::EmitAtomicBinary(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::HexagonFrameLowering::emitEpilogue(), llvm::MSP430FrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::ARMFrameLowering::emitEpilogue(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::AArch64TargetLowering::EmitF128CSEL(), emitGPDisp(), llvm::MSP430TargetLowering::EmitInstrWithCustomInserter(), llvm::XCoreTargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::MachineRegisterInfo::EmitLiveInCopies(), llvm::PPCTargetLowering::EmitPartwordAtomicBinary(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::HexagonFrameLowering::emitPrologue(), llvm::NVPTXFrameLowering::emitPrologue(), llvm::MSP430FrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::AArch64FrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::SystemZFrameLowering::emitPrologue(), llvm::MSP430TargetLowering::EmitShiftInstr(), EmitXBegin(), llvm::SparcTargetLowering::expandAtomicRMW(), llvm::SparcTargetLowering::expandSelectCC(), findFirstPredicateSetterFrom(), findHoistingInsertPosAndDeps(), findInsertLocation(), llvm::findPHICopyInsertPoint(), FindSplitPointForStackProtector(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::RegScavenger::forward(), getBranchDebugLoc(), llvm::getFirstEpilogueInst(), getFirstTerminator(), llvm::SparcInstrInfo::getGlobalBaseReg(), llvm::ARMHazardRecognizer::getHazardType(), llvm::SlotIndexes::getIndexBefore(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), HashEndOfMBB(), INITIALIZE_PASS(), llvm::MipsAsmPrinter::isBlockOnlyReachableByFallthrough(), IsBranchOnlyBlock(), IsEmptyBlock(), llvm::R600InstrInfo::isPredicable(), llvm::SplitEditor::leaveIntvAtTop(), llvm::FastISel::leaveLocalValueArea(), LookForIdenticalPHI(), llvm::AArch64RegisterInfo::materializeFrameBaseRegister(), llvm::PPCRegisterInfo::materializeFrameBaseRegister(), llvm::ARMBaseRegisterInfo::materializeFrameBaseRegister(), MBBDefinesCTR(), mergeSPUpdates(), mergeSPUpdatesUp(), llvm::AArch64InstrInfo::optimizeCompareInstr(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), PrevCrossBBInst(), ProcessSourceNode(), ProfitableToMerge(), llvm::RegPressureTracker::recede(), llvm::XCoreInstrInfo::RemoveBranch(), llvm::NVPTXInstrInfo::RemoveBranch(), llvm::HexagonInstrInfo::RemoveBranch(), llvm::SparcInstrInfo::RemoveBranch(), llvm::MSP430InstrInfo::RemoveBranch(), llvm::ARMBaseInstrInfo::RemoveBranch(), llvm::PPCInstrInfo::RemoveBranch(), llvm::AArch64InstrInfo::RemoveBranch(), llvm::SystemZInstrInfo::RemoveBranch(), llvm::R600InstrInfo::RemoveBranch(), removeDebugValues(), RemoveVRSaveCode(), llvm::SlotIndexes::repairIndexesInRange(), llvm::LiveIntervals::repairIntervalsInRange(), llvm::Thumb2InstrInfo::ReplaceTailWithBranchTo(), llvm::XCoreFrameLowering::restoreCalleeSavedRegisters(), llvm::PPCFrameLowering::restoreCalleeSavedRegisters(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::SlotIndexes::runOnMachineFunction(), splitBlockAfter(), splitBlockBefore(), llvm::RegScavenger::unprocess(), verifyCTRBranch(), and VerifyPHIs().
const_iterator llvm::MachineBasicBlock::begin | ( | ) | const [inline] |
Definition at line 242 of file MachineBasicBlock.h.
References instr_begin().
canFallThrough - Return true if the block can implicitly transfer control to the block after it by falling off the end of it. This should return false if it can reach the block after it, but it uses an explicit branch to do so (e.g., a table jump). True is a conservative answer.
Definition at line 636 of file MachineBasicBlock.cpp.
References llvm::TargetInstrInfo::AnalyzeBranch(), back(), llvm::SmallVectorBase::empty(), empty(), end(), llvm::TargetSubtargetInfo::getInstrInfo(), getParent(), llvm::MachineFunction::getSubtarget(), llvm::MachineInstr::isBarrier(), llvm::TargetInstrInfo::isPredicated(), isSuccessor(), and TII.
Referenced by updateTerminator().
void llvm::MachineBasicBlock::clear | ( | ) | [inline] |
Definition at line 557 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::clear().
MachineBasicBlock::LivenessQueryResult MachineBasicBlock::computeRegisterLiveness | ( | const TargetRegisterInfo * | TRI, |
unsigned | Reg, | ||
MachineInstr * | MI, | ||
unsigned | Neighborhood = 10 |
||
) |
computeRegisterLiveness - Return whether (physical) register Reg
has been <def>ined and not <kill>ed as of just before MI
.
Search is localised to a neighborhood of Neighborhood
instructions before (searching for defs or kills) and Neighborhood instructions after (searching just for defs) MI.
Reg
must be a physical register.
Return whether (physical) register "Reg" has been <def>ined and not <kill>ed as of just before "MI".
Search is localised to a neighborhood of Neighborhood instructions before (searching for defs or kills) and N instructions after (searching just for defs) MI.
Definition at line 1142 of file MachineBasicBlock.cpp.
References Analysis, llvm::MachineOperandIteratorBase::analyzePhysReg(), begin(), llvm::MachineOperandIteratorBase::PhysRegInfo::Clobbers, llvm::MachineOperandIteratorBase::PhysRegInfo::Defines, llvm::MachineOperandIteratorBase::PhysRegInfo::DefinesDead, end(), llvm::MachineInstr::getParent(), I, isLiveIn(), llvm::MCRegAliasIterator::isValid(), llvm::MachineOperandIteratorBase::PhysRegInfo::Kills, LQR_Dead, LQR_Live, LQR_OverlappingLive, LQR_Unknown, llvm::MachineOperandIteratorBase::PhysRegInfo::Reads, and llvm::MachineOperandIteratorBase::PhysRegInfo::ReadsOverlap.
Referenced by getImplicitSPRUseForDPRUse(), and isAnySubRegLive().
bool MachineBasicBlock::CorrectExtraCFGEdges | ( | MachineBasicBlock * | DestA, |
MachineBasicBlock * | DestB, | ||
bool | isCond | ||
) |
CorrectExtraCFGEdges - Various pieces of code can cause excess edges in the CFG to be inserted. If we have proven that MBB can only branch to DestA and DestB, remove any other MBB successors from the CFG. DestA and DestB can be null. Besides DestA and DestB, retain other edges leading to LandingPads (currently there can be only one; we don't check or require that here). Note it is possible that DestA and/or DestB are LandingPads.
Definition at line 1028 of file MachineBasicBlock.cpp.
References llvm::SmallPtrSetImpl< PtrType >::insert(), isLandingPad(), removeSuccessor(), succ_begin(), and succ_end().
Referenced by llvm::BranchFolder::OptimizeFunction().
void MachineBasicBlock::dump | ( | ) | const |
Definition at line 244 of file MachineBasicBlock.cpp.
References llvm::dbgs(), and print().
bool llvm::MachineBasicBlock::empty | ( | ) | const [inline] |
Definition at line 220 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::empty().
Referenced by bothUsedInPHI(), canFallThrough(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::CreateEmptyPHI(), llvm::findPHICopyInsertPoint(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), HandleVRSaveUpdate(), llvm::MipsAsmPrinter::isBlockOnlyReachableByFallthrough(), llvm::AsmPrinter::isBlockOnlyReachableByFallthrough(), IsEmptyBlock(), LookForIdenticalPHI(), llvm::AggressiveAntiDepBreaker::StartBlock(), and llvm::FastISel::startNewBlock().
iterator llvm::MachineBasicBlock::end | ( | ) | [inline] |
Definition at line 243 of file MachineBasicBlock.h.
References instr_end().
Referenced by addLiveIn(), llvm::LiveVariables::addNewBlock(), llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), llvm::MipsSEInstrInfo::adjustStackPtr(), llvm::RegPressureTracker::advance(), llvm::XCoreInstrInfo::AnalyzeBranch(), llvm::NVPTXInstrInfo::AnalyzeBranch(), llvm::SparcInstrInfo::AnalyzeBranch(), llvm::MSP430InstrInfo::AnalyzeBranch(), llvm::ARMBaseInstrInfo::AnalyzeBranch(), llvm::PPCInstrInfo::AnalyzeBranch(), llvm::AArch64InstrInfo::AnalyzeBranch(), llvm::SystemZInstrInfo::AnalyzeBranch(), llvm::R600InstrInfo::AnalyzeBranch(), back(), llvm::MachineInstrSpan::begin(), llvm::Mips16InstrInfo::BuildAddiuSpImm(), llvm::BuildMI(), canFallThrough(), checkAndUpdateEFLAGSKill(), collectDebugValues(), ComputeCommonTailLength(), computeRegisterLiveness(), CountTerminators(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::CreateEmptyPHI(), llvm::LexicalScopes::dominates(), llvm::PPCTargetLowering::EmitAtomicBinary(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::HexagonFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::HexagonAsmPrinter::EmitInstruction(), llvm::AMDGPUAsmPrinter::EmitInstruction(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::XCoreTargetLowering::EmitInstrWithCustomInserter(), llvm::MSP430TargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitPartwordAtomicBinary(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::HexagonFrameLowering::emitPrologue(), llvm::MSP430FrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::SystemZFrameLowering::emitPrologue(), llvm::MSP430TargetLowering::EmitShiftInstr(), EmitXBegin(), llvm::ScheduleDAGMILive::enterRegion(), llvm::SparcTargetLowering::expandAtomicRMW(), llvm::SparcTargetLowering::expandSelectCC(), findHoistingInsertPosAndDeps(), FindLastAluClause(), llvm::findPHICopyInsertPoint(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::RegScavenger::forward(), getBranchDebugLoc(), llvm::RegPressureTracker::getCurrSlot(), llvm::getFirstEpilogueInst(), getFirstTerminator(), llvm::SlotIndexes::getIndexAfter(), getLastNonDebugInstr(), llvm::SplitAnalysis::getLastSplitPointIter(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), HashEndOfMBB(), INITIALIZE_PASS(), llvm::R600InstrInfo::InsertBranch(), IsBetterFallthrough(), llvm::MipsAsmPrinter::isBlockOnlyReachableByFallthrough(), IsBranchOnlyBlock(), IsEmptyBlock(), llvm::Thumb2InstrInfo::isLegalToSplitMBBAt(), llvm::ARMBaseInstrInfo::isSchedulingBoundary(), isSuitableForMask(), llvm::XCoreInstrInfo::loadImmediate(), llvm::SystemZInstrInfo::loadImmediate(), llvm::Mips16InstrInfo::loadRegFromStack(), llvm::MipsSEInstrInfo::loadRegFromStack(), llvm::Thumb1InstrInfo::loadRegFromStackSlot(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::MSP430InstrInfo::loadRegFromStackSlot(), llvm::XCoreInstrInfo::loadRegFromStackSlot(), llvm::SparcInstrInfo::loadRegFromStackSlot(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::PPCInstrInfo::loadRegFromStackSlot(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::SystemZInstrInfo::loadRegFromStackSlot(), LookForIdenticalPHI(), llvm::Mips16InstrInfo::makeFrame(), llvm::AArch64RegisterInfo::materializeFrameBaseRegister(), llvm::PPCRegisterInfo::materializeFrameBaseRegister(), llvm::ARMBaseRegisterInfo::materializeFrameBaseRegister(), MBBDefinesCTR(), mergeSPUpdates(), mergeSPUpdatesDown(), NoInterveningSideEffect(), llvm::AArch64InstrInfo::optimizeCompareInstr(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), PrevCrossBBInst(), llvm::FastISel::recomputeInsertPt(), llvm::XCoreInstrInfo::RemoveBranch(), llvm::NVPTXInstrInfo::RemoveBranch(), llvm::HexagonInstrInfo::RemoveBranch(), llvm::SparcInstrInfo::RemoveBranch(), llvm::MSP430InstrInfo::RemoveBranch(), llvm::ARMBaseInstrInfo::RemoveBranch(), llvm::PPCInstrInfo::RemoveBranch(), llvm::AArch64InstrInfo::RemoveBranch(), llvm::SystemZInstrInfo::RemoveBranch(), llvm::R600InstrInfo::RemoveBranch(), removeDebugValues(), RemoveVRSaveCode(), llvm::SlotIndexes::repairIndexesInRange(), llvm::LiveIntervals::repairIntervalsInRange(), llvm::TargetInstrInfo::ReplaceTailWithBranchTo(), llvm::SystemZFrameLowering::restoreCalleeSavedRegisters(), llvm::MSP430FrameLowering::restoreCalleeSavedRegisters(), llvm::AArch64FrameLowering::restoreCalleeSavedRegisters(), llvm::Mips16InstrInfo::restoreFrame(), llvm::SlotIndexes::runOnMachineFunction(), SkipPHIsAndLabels(), llvm::SystemZFrameLowering::spillCalleeSavedRegisters(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::XCoreFrameLowering::spillCalleeSavedRegisters(), llvm::MSP430FrameLowering::spillCalleeSavedRegisters(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), splitBlockAfter(), splitBlockBefore(), SplitCriticalEdge(), llvm::Mips16InstrInfo::storeRegToStack(), llvm::MipsSEInstrInfo::storeRegToStack(), llvm::Thumb1InstrInfo::storeRegToStackSlot(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::MSP430InstrInfo::storeRegToStackSlot(), llvm::XCoreInstrInfo::storeRegToStackSlot(), llvm::SparcInstrInfo::storeRegToStackSlot(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::SystemZInstrInfo::storeRegToStackSlot(), terminators(), llvm::ScheduleDAGMILive::updatePressureDiffs(), verifyCTRBranch(), and VerifyPHIs().
const_iterator llvm::MachineBasicBlock::end | ( | ) | const [inline] |
Definition at line 244 of file MachineBasicBlock.h.
References instr_end().
Remove an instruction from the instruction list and delete it.
If the instruction is part of a bundle, the other instructions in the bundle will still be bundled after removing the single instruction.
Referenced by llvm::Mips16FrameLowering::eliminateCallFramePseudoInstr(), llvm::MipsSEFrameLowering::eliminateCallFramePseudoInstr(), llvm::NVPTXFrameLowering::eliminateCallFramePseudoInstr(), llvm::AArch64FrameLowering::eliminateCallFramePseudoInstr(), llvm::SparcFrameLowering::eliminateCallFramePseudoInstr(), llvm::MSP430FrameLowering::eliminateCallFramePseudoInstr(), llvm::HexagonFrameLowering::eliminateCallFramePseudoInstr(), llvm::XCoreFrameLowering::eliminateCallFramePseudoInstr(), llvm::Thumb1FrameLowering::eliminateCallFramePseudoInstr(), llvm::SystemZFrameLowering::eliminateCallFramePseudoInstr(), llvm::PPCFrameLowering::eliminateCallFramePseudoInstr(), llvm::X86FrameLowering::eliminateCallFramePseudoInstr(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::HexagonFrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::XCoreFrameLowering::emitEpilogue(), llvm::ARMFrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), erase(), erase_instr(), llvm::Mips16InstrInfo::expandPostRAPseudo(), llvm::MipsSEInstrInfo::expandPostRAPseudo(), llvm::AMDGPUInstrInfo::expandPostRAPseudo(), llvm::AArch64InstrInfo::expandPostRAPseudo(), llvm::PPCRegisterInfo::lowerCRBitRestore(), llvm::PPCRegisterInfo::lowerCRBitSpilling(), llvm::PPCRegisterInfo::lowerCRRestore(), llvm::PPCRegisterInfo::lowerCRSpilling(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), llvm::PPCRegisterInfo::lowerVRSAVERestore(), llvm::PPCRegisterInfo::lowerVRSAVESpilling(), mergeSPUpdates(), mergeSPUpdatesDown(), mergeSPUpdatesUp(), llvm::MipsInstrInfo::RemoveBranch(), removeDebugValues(), llvm::TargetInstrInfo::ReplaceTailWithBranchTo(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), and llvm::Thumb1RegisterInfo::rewriteFrameIndex().
iterator llvm::MachineBasicBlock::erase | ( | iterator | I, |
iterator | E | ||
) | [inline] |
Remove a range of instructions from the instruction list and delete them.
Definition at line 521 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::erase().
iterator llvm::MachineBasicBlock::erase | ( | iterator | I | ) | [inline] |
Remove an instruction or bundle from the instruction list and delete it.
If I points to a bundle of instructions, they are all erased.
Definition at line 528 of file MachineBasicBlock.h.
References erase().
iterator llvm::MachineBasicBlock::erase | ( | MachineInstr * | I | ) | [inline] |
Remove an instruction from the instruction list and delete it.
If I is the head of a bundle of instructions, the whole bundle will be erased.
Definition at line 536 of file MachineBasicBlock.h.
References erase().
instr_iterator llvm::MachineBasicBlock::erase_instr | ( | MachineInstr * | I | ) | [inline] |
Remove an instruction from the instruction list and delete it.
If the instruction is part of a bundle, the other instructions in the bundle will still be bundled after removing the single instruction.
Definition at line 516 of file MachineBasicBlock.h.
References erase().
void MachineBasicBlock::eraseFromParent | ( | ) |
eraseFromParent - This method unlinks 'this' from the containing function and deletes it.
eraseFromParent - This method unlinks 'this' from the containing function, and deletes it.
Definition at line 991 of file MachineBasicBlock.cpp.
References llvm::MachineFunction::erase(), and getParent().
Referenced by llvm::SparcInstrInfo::AnalyzeBranch(), llvm::MSP430InstrInfo::AnalyzeBranch(), and llvm::SystemZInstrInfo::AnalyzeBranch().
findDebugLoc - find the next valid DebugLoc starting at MBBI, skipping any DBG_VALUE instructions. Return UnknownLoc if there is none.
Referenced by llvm::SparcInstrInfo::AnalyzeBranch(), llvm::R600InstrInfo::buildDefaultInstruction(), llvm::SIInstrInfo::buildIndirectRead(), llvm::SIInstrInfo::buildIndirectWrite(), llvm::SIInstrInfo::buildMovInstr(), llvm::AArch64FrameLowering::emitCalleeSavedFrameMoves(), emitGPDisp(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::AArch64FrameLowering::emitPrologue(), emitSPUpdate(), llvm::SIInstrInfo::expandPostRAPseudo(), findDebugLoc(), llvm::SIInstrInfo::legalizeOpWithMove(), llvm::SIInstrInfo::loadRegFromStackSlot(), llvm::HexagonInstrInfo::loadRegFromStackSlot(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::SIInstrInfo::storeRegToStackSlot(), and llvm::HexagonInstrInfo::storeRegToStackSlot().
DebugLoc llvm::MachineBasicBlock::findDebugLoc | ( | iterator | MBBI | ) | [inline] |
Definition at line 607 of file MachineBasicBlock.h.
References findDebugLoc().
MachineInstr& llvm::MachineBasicBlock::front | ( | ) | [inline] |
Definition at line 227 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::front().
Referenced by addLiveIn(), and llvm::Thumb1FrameLowering::emitEpilogue().
const MachineInstr& llvm::MachineBasicBlock::front | ( | ) | const [inline] |
Definition at line 229 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::front().
unsigned llvm::MachineBasicBlock::getAlignment | ( | ) | const [inline] |
getAlignment - Return alignment of the basic block. The alignment is specified as log2(bytes).
Definition at line 345 of file MachineBasicBlock.h.
Referenced by llvm::AsmPrinter::EmitBasicBlockStart().
const BasicBlock* llvm::MachineBasicBlock::getBasicBlock | ( | ) | const [inline] |
getBasicBlock - Return the LLVM basic block that this instance corresponded to originally. Note that this may be NULL if this instance does not correspond directly to an LLVM basic block.
Definition at line 117 of file MachineBasicBlock.h.
Referenced by llvm::PPCTargetLowering::EmitAtomicBinary(), llvm::AsmPrinter::EmitBasicBlockStart(), emitBlockAfter(), llvm::SelectionDAGBuilder::EmitBranchForMergedCondition(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::XCoreTargetLowering::EmitInstrWithCustomInserter(), llvm::MSP430TargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitPartwordAtomicBinary(), llvm::MSP430TargetLowering::EmitShiftInstr(), EmitXBegin(), llvm::SparcTargetLowering::expandAtomicRMW(), llvm::SparcTargetLowering::expandSelectCC(), llvm::FastISel::fastEmitBranch(), llvm::SelectionDAGBuilder::FindMergedConditions(), getFullName(), getName(), llvm::DOTGraphTraits< const MachineFunction * >::getNodeLabel(), llvm::MipsAsmPrinter::isBlockOnlyReachableByFallthrough(), llvm::HexagonTargetLowering::LowerBR_JT(), and print().
getFirstInstrTerminator - Same getFirstTerminator but it ignores bundles and return an instr_iterator instead.
Definition at line 195 of file MachineBasicBlock.cpp.
References I, instr_begin(), and instr_end().
Referenced by SplitCriticalEdge().
Returns a pointer to the first instruction in this block that is not a PHINode instruction. When adding instructions to the beginning of the basic block, they should be added before the returned value, not before the first instruction, which might be PHI. Returns end() is there's no non-PHI instruction.
Definition at line 155 of file MachineBasicBlock.cpp.
References I, instr_begin(), and instr_end().
Referenced by llvm::ScheduleDAGSDNodes::EmitSchedule(), and llvm::FastISel::recomputeInsertPt().
getFirstTerminator - returns an iterator to the first terminator instruction of this basic block. If a terminator does not exist, it returns end()
Definition at line 176 of file MachineBasicBlock.cpp.
References begin(), end(), and I.
Referenced by llvm::HexagonFrameLowering::emitEpilogue(), llvm::ScheduleDAGSDNodes::EmitSchedule(), findHoistingInsertPosAndDeps(), findInsertLocation(), llvm::findPHICopyInsertPoint(), FindSplitPointForStackProtector(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::GetUndefVal(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), llvm::HexagonInstrInfo::InsertBranch(), llvm::SIInstrInfo::legalizeOperands(), SplitCriticalEdge(), and terminators().
Definition at line 186 of file MachineBasicBlock.cpp.
std::string MachineBasicBlock::getFullName | ( | ) | const |
Return a hopefully unique identifier for this block.
getFullName - Return a formatted string to identify this block and its parent function.
Definition at line 257 of file MachineBasicBlock.cpp.
References getBasicBlock(), llvm::MachineFunction::getName(), llvm::Value::getName(), getNumber(), getParent(), and Name.
Referenced by llvm::ScheduleDAGSDNodes::getDAGName(), llvm::ScheduleDAGInstrs::getDAGName(), and verifyCTRBranch().
getLandingPadSuccessor - If this block has a successor that is a landing pad, return it. Otherwise return NULL.
Definition at line 233 of file MachineBasicBlock.cpp.
References I, succ_begin(), succ_end(), and succ_size().
getLastNonDebugInstr - returns an iterator to the last non-debug instruction in the basic block, or end()
Definition at line 204 of file MachineBasicBlock.cpp.
References end(), I, instr_begin(), and instr_end().
Referenced by llvm::Mips16FrameLowering::emitEpilogue(), llvm::MipsSEFrameLowering::emitEpilogue(), llvm::SparcFrameLowering::emitEpilogue(), llvm::MSP430FrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::ARMFrameLowering::emitEpilogue(), llvm::XCoreFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::SystemZFrameLowering::emitEpilogue(), llvm::getFirstEpilogueInst(), llvm::HexagonFrameLowering::hasTailCall(), and verifyCTRBranch().
Definition at line 219 of file MachineBasicBlock.cpp.
References end(), I, instr_begin(), and instr_end().
StringRef MachineBasicBlock::getName | ( | ) | const |
getName - Return the name of the corresponding LLVM basic block, or "(null)".
Definition at line 249 of file MachineBasicBlock.cpp.
References getBasicBlock().
Referenced by getBlockName(), llvm::DOTGraphTraits< MachineBlockFrequencyInfo * >::getNodeLabel(), and llvm::VLIWMachineScheduler::schedule().
int llvm::MachineBasicBlock::getNumber | ( | ) | const [inline] |
getNumber - MachineBasicBlocks are uniquely numbered at the function level, unless they're not in a MachineFunction yet, in which case this will return -1.
Definition at line 644 of file MachineBasicBlock.h.
Referenced by llvm::LiveVariables::addNewBlock(), llvm::LiveIntervals::checkRegMaskInterference(), CompareMBBNumbers(), emitBasicBlockLoopComments(), llvm::AsmPrinter::EmitBasicBlockStart(), llvm::AsmPrinter::EmitJumpTableInfo(), llvm::SplitEditor::enterIntvAtEnd(), llvm::ScheduleDAGInstrs::fixupKills(), getBlockName(), getBlockNum(), llvm::MachineTraceMetrics::Ensemble::getDepthResources(), getFullName(), llvm::MachineTraceMetrics::Ensemble::getHeightResources(), llvm::MachineTraceMetrics::Trace::getInstrSlack(), llvm::SplitAnalysis::getLastSplitPointIter(), llvm::SlotIndexes::getMBBRange(), llvm::DOTGraphTraits< const MachineFunction * >::getNodeLabel(), llvm::MachineTraceMetrics::getResources(), getSymbol(), llvm::MachineTraceMetrics::Ensemble::getTrace(), llvm::LiveVariables::HandleVirtRegUse(), HashMachineInstr(), llvm::po_iterator_storage< LoopBounds, true >::insertEdge(), llvm::LiveIntervals::insertMBBInMaps(), llvm::SlotIndexes::insertMBBInMaps(), llvm::MachineTraceMetrics::Ensemble::invalidate(), llvm::MachineTraceMetrics::invalidate(), llvm::MachineTraceMetrics::Trace::isDepInTrace(), llvm::LiveVariables::VarInfo::isLiveIn(), llvm::LiveVariables::isLiveOut(), llvm::SplitEditor::leaveIntvAtTop(), llvm::LiveVariables::MarkVirtRegAliveInBlock(), llvm::MBB2NumberFunctor::operator()(), llvm::MachineTraceMetrics::TraceBlockInfo::print(), llvm::MachineTraceMetrics::Trace::print(), llvm::ARMConstantPoolMBB::print(), print(), printAsOperand(), llvm::MachineBranchProbabilityInfo::printEdgeProbability(), PrintParentLoopComment(), ProfitableToMerge(), llvm::SlotIndexes::runOnMachineFunction(), llvm::VLIWMachineScheduler::schedule(), llvm::LiveRangeCalc::setLiveOutValue(), SplitCriticalEdge(), llvm::SplitEditor::splitRegInBlock(), llvm::SplitEditor::splitRegOutBlock(), llvm::SplitEditor::splitSingleBlock(), llvm::MachineTraceMetrics::Ensemble::verify(), verifyCTRBranch(), and VerifyPHIs().
const MachineFunction* llvm::MachineBasicBlock::getParent | ( | ) | const [inline] |
getParent - Return the MachineFunction containing this basic block.
Definition at line 137 of file MachineBasicBlock.h.
Referenced by llvm::addFrameReference(), addLiveIn(), addLiveInRegs(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::AddPHIOperand(), addSavedGPR(), llvm::SITargetLowering::AdjustInstrPostInstrSelection(), BBHasFallthrough(), llvm::SIInstrInfo::buildIndirectRead(), llvm::SIInstrInfo::buildIndirectWrite(), llvm::BuildMI(), canCombineWithMUL(), canFallThrough(), canFallThroughTo(), canFoldCopy(), llvm::PPCInstrInfo::canInsertSelect(), llvm::AArch64InstrInfo::canInsertSelect(), llvm::MachineOperand::ChangeToImmediate(), llvm::MachineOperand::ChangeToRegister(), llvm::PPCInstrInfo::commuteInstruction(), llvm::TargetInstrInfo::commuteInstruction(), llvm::TargetSchedModel::computeOutputLatency(), concatenateMemOperands(), llvm::ARMBaseInstrInfo::convertToThreeAddress(), llvm::SystemZInstrInfo::convertToThreeAddress(), llvm::Thumb1InstrInfo::copyPhysReg(), llvm::NVPTXInstrInfo::copyPhysReg(), llvm::MachineFunction::DeleteMachineBasicBlock(), llvm::LexicalScopes::dominates(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::MSP430RegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::SparcRegisterInfo::eliminateFrameIndex(), llvm::NVPTXRegisterInfo::eliminateFrameIndex(), llvm::SystemZRegisterInfo::eliminateFrameIndex(), llvm::Thumb1RegisterInfo::eliminateFrameIndex(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::MipsRegisterInfo::eliminateFrameIndex(), llvm::AArch64RegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::ARMBaseRegisterInfo::eliminateFrameIndex(), emitAlignedDPRCS2Restores(), emitAlignedDPRCS2Spills(), llvm::PPCTargetLowering::EmitAtomicBinary(), emitBlockAfter(), llvm::AArch64FrameLowering::emitCalleeSavedFrameMoves(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), emitComments(), llvm::PPCTargetLowering::emitEHSjLjLongJmp(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::HexagonFrameLowering::emitEpilogue(), llvm::MachineInstr::emitError(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::X86AsmPrinter::EmitInstruction(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::XCoreTargetLowering::EmitInstrWithCustomInserter(), llvm::MSP430TargetLowering::EmitInstrWithCustomInserter(), llvm::HexagonTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::NVPTXAsmPrinter::emitLineNumberAsDotLoc(), llvm::Thumb2RegisterInfo::emitLoadConstPool(), llvm::Thumb1RegisterInfo::emitLoadConstPool(), llvm::ARMBaseRegisterInfo::emitLoadConstPool(), llvm::PPCTargetLowering::EmitPartwordAtomicBinary(), llvm::TargetLoweringBase::emitPatchPoint(), llvm::ScheduleDAGSDNodes::EmitSchedule(), llvm::MSP430TargetLowering::EmitShiftInstr(), emitThumbRegPlusImmInReg(), EmitXBegin(), llvm::RegScavenger::enterBasicBlock(), eraseFromParent(), llvm::MachineInstr::eraseFromParentAndMarkDBGValuesForRemoval(), eraseGPOpnd(), llvm::SparcTargetLowering::expandAtomicRMW(), expandLoadStackGuard(), llvm::ARMBaseInstrInfo::expandLoadStackGuardBase(), llvm::Mips16InstrInfo::expandPostRAPseudo(), llvm::MipsSEInstrInfo::expandPostRAPseudo(), llvm::AMDGPUInstrInfo::expandPostRAPseudo(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::AArch64InstrInfo::expandPostRAPseudo(), llvm::SparcTargetLowering::expandSelectCC(), findDeadCallerSavedReg(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::DominatorTreeBase< MachineBasicBlock >::findNearestCommonDominator(), llvm::findPHICopyInsertPoint(), FixTail(), llvm::TargetInstrInfo::foldMemoryOperand(), forceReg(), llvm::RegScavenger::forward(), llvm::AArch64InstrInfo::genAlternativeCodeSequence(), llvm::MachineLoop::getBottomBlock(), getFrameIndexMMO(), getFullName(), llvm::ARMHazardRecognizer::getHazardType(), llvm::AArch64InstrInfo::GetInstSizeInBytes(), llvm::MSP430InstrInfo::GetInstSizeInBytes(), llvm::MipsInstrInfo::GetInstSizeInBytes(), llvm::ARMBaseInstrInfo::GetInstSizeInBytes(), llvm::SystemZInstrInfo::getInstSizeInBytes(), llvm::PPCInstrInfo::GetInstSizeInBytes(), llvm::AArch64InstrInfo::getLdStBaseRegImmOfs(), llvm::MipsInstrInfo::GetMemOperand(), getNextBlock(), llvm::PPCInstrInfo::getOperandLatency(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::SIInstrInfo::getOpRegClass(), llvm::MachineFrameInfo::getPristineRegs(), getSymbol(), GetSymbolRef(), llvm::MachineLoop::getTopBlock(), HandleVRSaveUpdate(), hasVGPROperands(), llvm::RegScavenger::initRegState(), llvm::ARMBaseInstrInfo::InsertBranch(), llvm::SlotIndexes::insertMBBInMaps(), llvm::PPCInstrInfo::insertSelect(), llvm::AArch64InstrInfo::insertSelect(), llvm::SIInstrInfo::isOperandLegal(), llvm::ARMBaseInstrInfo::isPredicable(), llvm::SystemZInstrInfo::isStackSlotCopy(), llvm::SIInstrInfo::legalizeOperands(), llvm::SIInstrInfo::legalizeOpWithMove(), llvm::MipsSEInstrInfo::loadImmediate(), llvm::XCoreInstrInfo::loadImmediate(), llvm::Thumb1InstrInfo::loadRegFromStackSlot(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::MSP430InstrInfo::loadRegFromStackSlot(), llvm::XCoreInstrInfo::loadRegFromStackSlot(), llvm::SIInstrInfo::loadRegFromStackSlot(), llvm::SparcInstrInfo::loadRegFromStackSlot(), llvm::HexagonInstrInfo::loadRegFromStackSlot(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::PPCInstrInfo::loadRegFromStackSlot(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::PPCRegisterInfo::lowerCRBitRestore(), llvm::PPCRegisterInfo::lowerCRBitSpilling(), llvm::PPCRegisterInfo::lowerCRRestore(), llvm::PPCRegisterInfo::lowerCRSpilling(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), llvm::PPCRegisterInfo::lowerVRSAVERestore(), llvm::PPCRegisterInfo::lowerVRSAVESpilling(), llvm::Mips16InstrInfo::makeFrame(), MakeM0Inst(), llvm::AArch64RegisterInfo::materializeFrameBaseRegister(), llvm::PPCRegisterInfo::materializeFrameBaseRegister(), llvm::ARMBaseRegisterInfo::materializeFrameBaseRegister(), MIsNeedChainEdge(), moveAfter(), moveBefore(), llvm::SIInstrInfo::moveSMRDToVALU(), llvm::SIInstrInfo::moveToVALU(), llvm::AArch64RegisterInfo::needsFrameBaseReg(), llvm::PPCRegisterInfo::needsFrameBaseReg(), llvm::ARMBaseRegisterInfo::needsFrameBaseReg(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::ARMBaseInstrInfo::optimizeSelect(), llvm::HexagonInstrInfo::PredicateInstruction(), llvm::ARMBaseInstrInfo::PredicateInstruction(), llvm::SystemZInstrInfo::PredicateInstruction(), llvm::R600InstrInfo::PredicateInstruction(), llvm::PPCInstrInfo::PredicateInstruction(), PrevCrossBBInst(), llvm::MachineOperand::print(), print(), llvm::MachineInstr::print(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::printOperand(), llvm::ARMBaseInstrInfo::produceSameValue(), ProfitableToMerge(), llvm::ARMBaseInstrInfo::reMaterialize(), llvm::TargetInstrInfo::reMaterialize(), removeFromParent(), RemoveVRSaveCode(), llvm::Thumb2InstrInfo::ReplaceTailWithBranchTo(), llvm::TargetInstrInfo::ReplaceTailWithBranchTo(), llvm::Thumb1RegisterInfo::resolveFrameIndex(), llvm::PPCRegisterInfo::resolveFrameIndex(), llvm::ARMBaseRegisterInfo::resolveFrameIndex(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), llvm::SystemZFrameLowering::restoreCalleeSavedRegisters(), llvm::XCoreFrameLowering::restoreCalleeSavedRegisters(), llvm::ARMFrameLowering::restoreCalleeSavedRegisters(), llvm::HexagonFrameLowering::restoreCalleeSavedRegisters(), llvm::MSP430FrameLowering::restoreCalleeSavedRegisters(), llvm::AArch64FrameLowering::restoreCalleeSavedRegisters(), llvm::PPCFrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), restoreCRs(), llvm::Mips16InstrInfo::restoreFrame(), llvm::Thumb1RegisterInfo::rewriteFrameIndex(), llvm::rewriteT2FrameIndex(), llvm::Mips16RegisterInfo::saveScavengerRegister(), llvm::Thumb1RegisterInfo::saveScavengerRegister(), llvm::VLIWMachineScheduler::schedule(), setCallTargetReg(), llvm::ARMBaseInstrInfo::setExecutionDomain(), llvm::MachineOperand::setIsDef(), llvm::MachineOperand::setReg(), llvm::CoalescerPair::setRegisters(), llvm::ARMBaseRegisterInfo::shouldCoalesce(), llvm::HexagonFrameLowering::spillCalleeSavedRegisters(), llvm::SystemZFrameLowering::spillCalleeSavedRegisters(), llvm::Mips16FrameLowering::spillCalleeSavedRegisters(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), llvm::XCoreFrameLowering::spillCalleeSavedRegisters(), llvm::ARMFrameLowering::spillCalleeSavedRegisters(), llvm::MSP430FrameLowering::spillCalleeSavedRegisters(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), SplitCriticalEdge(), llvm::SIInstrInfo::splitSMRD(), llvm::Thumb1InstrInfo::storeRegToStackSlot(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::MSP430InstrInfo::storeRegToStackSlot(), llvm::XCoreInstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), llvm::SparcInstrInfo::storeRegToStackSlot(), llvm::HexagonInstrInfo::storeRegToStackSlot(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::PPCInstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), UpdateOperandRegClass(), UpdatePredRedefs(), updateTerminator(), llvm::R600InstrInfo::usesTextureCache(), llvm::R600InstrInfo::usesVertexCache(), verifyCTRBranch(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().
MachineFunction* llvm::MachineBasicBlock::getParent | ( | ) | [inline] |
Definition at line 138 of file MachineBasicBlock.h.
MCSymbol * MachineBasicBlock::getSymbol | ( | ) | const |
getSymbol - Return the MCSymbol for this basic block.
Definition at line 53 of file MachineBasicBlock.cpp.
References llvm::MachineFunction::getContext(), llvm::TargetSubtargetInfo::getDataLayout(), llvm::MachineFunction::getFunctionNumber(), getNumber(), llvm::MCContext::GetOrCreateSymbol(), getParent(), llvm::DataLayout::getPrivateGlobalPrefix(), llvm::TargetMachine::getSubtargetImpl(), llvm::MachineFunction::getTarget(), llvm::cl::Prefix, and llvm::SystemZISD::TM.
Referenced by llvm::AsmPrinter::EmitBasicBlockStart(), EmitGCCInlineAsmStr(), llvm::ARMAsmPrinter::EmitJump2Table(), llvm::ARMAsmPrinter::EmitJumpTable(), llvm::AsmPrinter::EmitJumpTableInfo(), llvm::ARMAsmPrinter::EmitMachineConstantPoolValue(), llvm::SystemZMCInstLower::getExpr(), llvm::HexagonLowerToMC(), llvm::MSP430MCInstLower::Lower(), llvm::AArch64MCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::LowerPPCMachineInstrToMCInst(), LowerSymbolOperand(), llvm::HexagonAsmPrinter::printOperand(), llvm::ARMAsmPrinter::printOperand(), and llvm::MipsAsmPrinter::printOperand().
bool llvm::MachineBasicBlock::hasAddressTaken | ( | ) | const [inline] |
hasAddressTaken - Test whether this block is potentially the target of an indirect branch.
Definition at line 129 of file MachineBasicBlock.h.
Referenced by llvm::AsmPrinter::EmitBasicBlockStart(), llvm::HexagonAsmPrinter::isBlockOnlyReachableByFallthrough(), and print().
Insert MI into the instruction list before I, possibly inside a bundle.
If the insertion point is inside a bundle, MI will be added to the bundle, otherwise MI will not be added to any bundle. That means this function alone can't be used to prepend or append instructions to bundles. See MIBundleBuilder::insert() for a more reliable way of doing that.
Referenced by llvm::BuildMI(), llvm::MSP430FrameLowering::eliminateCallFramePseudoInstr(), llvm::XCoreFrameLowering::eliminateCallFramePseudoInstr(), llvm::X86FrameLowering::eliminateCallFramePseudoInstr(), llvm::TargetLoweringBase::emitPatchPoint(), llvm::X86FrameLowering::emitPrologue(), llvm::ScheduleDAGSDNodes::EmitSchedule(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::MIBundleBuilder::insert(), llvm::PPCInstrInfo::loadRegFromStackSlot(), ProcessSDDbgValues(), llvm::ARMBaseInstrInfo::reMaterialize(), llvm::TargetInstrInfo::reMaterialize(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), restoreCRs(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), and llvm::PPCInstrInfo::storeRegToStackSlot().
void llvm::MachineBasicBlock::insert | ( | iterator | I, |
IT | S, | ||
IT | E | ||
) | [inline] |
Insert a range of instructions into the instruction list before I.
Definition at line 488 of file MachineBasicBlock.h.
References llvm::ilist< NodeTy >::insert().
iterator llvm::MachineBasicBlock::insert | ( | iterator | I, |
MachineInstr * | MI | ||
) | [inline] |
Insert MI into the instruction list before I.
Definition at line 493 of file MachineBasicBlock.h.
References llvm::ilist< NodeTy >::insert(), llvm::MachineInstr::isBundledWithPred(), llvm::MachineInstr::isBundledWithSucc(), and llvm::AArch64CC::MI.
iterator llvm::MachineBasicBlock::insertAfter | ( | iterator | I, |
MachineInstr * | MI | ||
) | [inline] |
Insert MI into the instruction list after I.
Definition at line 500 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::insertAfter(), llvm::MachineInstr::isBundledWithPred(), llvm::MachineInstr::isBundledWithSucc(), and llvm::AArch64CC::MI.
Referenced by llvm::SelectionDAGISel::runOnMachineFunction().
MachineInstr& llvm::MachineBasicBlock::instr_back | ( | ) | [inline] |
Definition at line 223 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::back().
const MachineInstr& llvm::MachineBasicBlock::instr_back | ( | ) | const [inline] |
Definition at line 225 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::back().
instr_iterator llvm::MachineBasicBlock::instr_begin | ( | ) | [inline] |
Definition at line 232 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::begin().
Referenced by llvm::HexagonInstrInfo::AnalyzeBranch(), begin(), llvm::finalizeBundles(), getFirstInstrTerminator(), getFirstNonPHI(), getLastNonDebugInstr(), INITIALIZE_PASS(), print(), ReplaceUsesOfBlockWith(), SplitCriticalEdge(), and transferSuccessorsAndUpdatePHIs().
const_instr_iterator llvm::MachineBasicBlock::instr_begin | ( | ) | const [inline] |
Definition at line 233 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::begin().
instr_iterator llvm::MachineBasicBlock::instr_end | ( | ) | [inline] |
Definition at line 234 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::end().
Referenced by llvm::HexagonInstrInfo::AnalyzeBranch(), llvm::MipsAsmPrinter::EmitInstruction(), end(), llvm::finalizeBundles(), getBundledUseMI(), getFirstInstrTerminator(), getFirstNonPHI(), getLastNonDebugInstr(), INITIALIZE_PASS(), llvm::MachineInstr::isIdenticalTo(), llvm::ARMBaseInstrInfo::isPredicated(), llvm::MachineOperandIteratorBase::MachineOperandIteratorBase(), print(), ReplaceUsesOfBlockWith(), SplitCriticalEdge(), and transferSuccessorsAndUpdatePHIs().
const_instr_iterator llvm::MachineBasicBlock::instr_end | ( | ) | const [inline] |
Definition at line 235 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::end().
MachineInstr& llvm::MachineBasicBlock::instr_front | ( | ) | [inline] |
Definition at line 222 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::front().
const MachineInstr& llvm::MachineBasicBlock::instr_front | ( | ) | const [inline] |
Definition at line 224 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::front().
Definition at line 236 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::rbegin().
Referenced by rbegin().
const_reverse_instr_iterator llvm::MachineBasicBlock::instr_rbegin | ( | ) | const [inline] |
Definition at line 237 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::rbegin().
Definition at line 238 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::rend().
Referenced by rend().
const_reverse_instr_iterator llvm::MachineBasicBlock::instr_rend | ( | ) | const [inline] |
Definition at line 239 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::rend().
bool llvm::MachineBasicBlock::isLandingPad | ( | ) | const [inline] |
isLandingPad - Returns true if the block is a landing pad. That is this basic block is entered via an exception handler.
Definition at line 354 of file MachineBasicBlock.h.
Referenced by addLiveIn(), CorrectExtraCFGEdges(), llvm::findPHICopyInsertPoint(), llvm::MipsAsmPrinter::isBlockOnlyReachableByFallthrough(), llvm::AsmPrinter::isBlockOnlyReachableByFallthrough(), print(), and SplitCriticalEdge().
bool MachineBasicBlock::isLayoutSuccessor | ( | const MachineBasicBlock * | MBB | ) | const |
isLayoutSuccessor - Return true if the specified MBB will be emitted immediately after this block, such that if this block exits by falling through, control will transfer to the specified MBB. Note that MBB need not be a successor at all, for example if this block ends with an unconditional branch to some other block.
Definition at line 631 of file MachineBasicBlock.cpp.
References I.
Referenced by llvm::HexagonInstrInfo::AnalyzeBranch(), llvm::SparcInstrInfo::AnalyzeBranch(), llvm::MSP430InstrInfo::AnalyzeBranch(), llvm::SystemZInstrInfo::AnalyzeBranch(), llvm::FastISel::fastEmitBranch(), llvm::MipsAsmPrinter::isBlockOnlyReachableByFallthrough(), llvm::AsmPrinter::isBlockOnlyReachableByFallthrough(), ProfitableToMerge(), SplitCriticalEdge(), and updateTerminator().
bool MachineBasicBlock::isLiveIn | ( | unsigned | Reg | ) | const |
isLiveIn - Return true if the specified register is in the live in set.
Definition at line 348 of file MachineBasicBlock.cpp.
References I, livein_begin(), and livein_end().
Referenced by addLiveIn(), addLiveInRegs(), addSavedGPR(), checkAndUpdateEFLAGSKill(), computeRegisterLiveness(), llvm::MipsSEFrameLowering::emitPrologue(), and llvm::AArch64InstrInfo::optimizeCompareInstr().
bool MachineBasicBlock::isPredecessor | ( | const MachineBasicBlock * | MBB | ) | const |
isPredecessor - Return true if the specified MBB is a predecessor of this block.
Definition at line 623 of file MachineBasicBlock.cpp.
References pred_begin(), and pred_end().
Referenced by llvm::MachineTraceMetrics::Ensemble::invalidate(), and llvm::MachineTraceMetrics::Ensemble::verify().
bool MachineBasicBlock::isSuccessor | ( | const MachineBasicBlock * | MBB | ) | const |
isSuccessor - Return true if the specified MBB is a successor of this block.
Definition at line 627 of file MachineBasicBlock.cpp.
References succ_begin(), and succ_end().
Referenced by canFallThrough(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), llvm::MachineTraceMetrics::Ensemble::invalidate(), IsBetterFallthrough(), and llvm::MachineTraceMetrics::Ensemble::verify().
livein_iterator llvm::MachineBasicBlock::livein_begin | ( | ) | const [inline] |
Definition at line 338 of file MachineBasicBlock.h.
Referenced by llvm::LivePhysRegs::addLiveIns(), llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::RegScavenger::initRegState(), isLiveIn(), print(), and SplitCriticalEdge().
bool llvm::MachineBasicBlock::livein_empty | ( | ) | const [inline] |
Definition at line 340 of file MachineBasicBlock.h.
Referenced by print().
livein_iterator llvm::MachineBasicBlock::livein_end | ( | ) | const [inline] |
Definition at line 339 of file MachineBasicBlock.h.
Referenced by llvm::LivePhysRegs::addLiveIns(), llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::RegScavenger::initRegState(), isLiveIn(), print(), and SplitCriticalEdge().
void MachineBasicBlock::moveAfter | ( | MachineBasicBlock * | NewBefore | ) |
Definition at line 389 of file MachineBasicBlock.cpp.
References getParent(), and llvm::MachineFunction::splice().
void MachineBasicBlock::moveBefore | ( | MachineBasicBlock * | NewAfter | ) |
moveBefore/moveAfter - move 'this' block before or after the specified block. This only moves the block, it does not modify the CFG or adjust potential fall-throughs at the end of the block.
Definition at line 385 of file MachineBasicBlock.cpp.
References getParent(), and llvm::MachineFunction::splice().
void llvm::MachineBasicBlock::pop_back | ( | ) | [inline] |
Definition at line 475 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::pop_back().
void llvm::MachineBasicBlock::pop_front | ( | ) | [inline] |
Definition at line 474 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::pop_front().
pred_iterator llvm::MachineBasicBlock::pred_begin | ( | ) | [inline] |
Definition at line 270 of file MachineBasicBlock.h.
Referenced by BBIsJumpedOver(), llvm::GraphTraits< Inverse< MachineBasicBlock * > >::child_begin(), llvm::GraphTraits< Inverse< const MachineBasicBlock * > >::child_begin(), llvm::ConnectedVNInfoEqClasses::Classify(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::FindPredecessorBlocks(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), llvm::LiveVariables::HandleVirtRegUse(), llvm::LiveIntervals::hasPHIKill(), llvm::MachineTraceMetrics::Ensemble::invalidate(), llvm::MipsAsmPrinter::isBlockOnlyReachableByFallthrough(), llvm::AsmPrinter::isBlockOnlyReachableByFallthrough(), isPredecessor(), predecessors(), print(), llvm::LiveIntervals::shrinkToUses(), verifyCTRBranch(), and VerifyPHIs().
const_pred_iterator llvm::MachineBasicBlock::pred_begin | ( | ) | const [inline] |
Definition at line 271 of file MachineBasicBlock.h.
bool llvm::MachineBasicBlock::pred_empty | ( | ) | const [inline] |
Definition at line 285 of file MachineBasicBlock.h.
Referenced by llvm::AsmPrinter::EmitBasicBlockStart(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), llvm::MipsAsmPrinter::isBlockOnlyReachableByFallthrough(), llvm::AsmPrinter::isBlockOnlyReachableByFallthrough(), and print().
pred_iterator llvm::MachineBasicBlock::pred_end | ( | ) | [inline] |
Definition at line 272 of file MachineBasicBlock.h.
Referenced by llvm::GraphTraits< Inverse< MachineBasicBlock * > >::child_end(), llvm::GraphTraits< Inverse< const MachineBasicBlock * > >::child_end(), llvm::ConnectedVNInfoEqClasses::Classify(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::FindPredecessorBlocks(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), llvm::LiveVariables::HandleVirtRegUse(), llvm::LiveIntervals::hasPHIKill(), llvm::MachineTraceMetrics::Ensemble::invalidate(), llvm::MipsAsmPrinter::isBlockOnlyReachableByFallthrough(), isPredecessor(), predecessors(), print(), llvm::LiveIntervals::shrinkToUses(), verifyCTRBranch(), and VerifyPHIs().
const_pred_iterator llvm::MachineBasicBlock::pred_end | ( | ) | const [inline] |
Definition at line 273 of file MachineBasicBlock.h.
Definition at line 274 of file MachineBasicBlock.h.
Referenced by llvm::LiveVariables::MarkVirtRegAliveInBlock().
const_pred_reverse_iterator llvm::MachineBasicBlock::pred_rbegin | ( | ) | const [inline] |
Definition at line 276 of file MachineBasicBlock.h.
pred_reverse_iterator llvm::MachineBasicBlock::pred_rend | ( | ) | [inline] |
Definition at line 278 of file MachineBasicBlock.h.
Referenced by llvm::LiveVariables::MarkVirtRegAliveInBlock().
const_pred_reverse_iterator llvm::MachineBasicBlock::pred_rend | ( | ) | const [inline] |
Definition at line 280 of file MachineBasicBlock.h.
unsigned llvm::MachineBasicBlock::pred_size | ( | ) | const [inline] |
Definition at line 282 of file MachineBasicBlock.h.
Referenced by BBIsJumpedOver(), llvm::LiveIntervals::hasPHIKill(), llvm::AsmPrinter::isBlockOnlyReachableByFallthrough(), and isSplitEdge().
iterator_range<pred_iterator> llvm::MachineBasicBlock::predecessors | ( | ) | [inline] |
Definition at line 303 of file MachineBasicBlock.h.
References pred_begin(), and pred_end().
Referenced by reachingDefAlgorithm().
iterator_range<const_pred_iterator> llvm::MachineBasicBlock::predecessors | ( | ) | const [inline] |
Definition at line 306 of file MachineBasicBlock.h.
References pred_begin(), and pred_end().
void MachineBasicBlock::print | ( | raw_ostream & | OS, |
SlotIndexes * | Indexes = nullptr |
||
) | const |
Definition at line 268 of file MachineBasicBlock.cpp.
References getBasicBlock(), llvm::SlotIndexes::getInstructionIndex(), llvm::SlotIndexes::getMBBStartIdx(), getNumber(), getParent(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), hasAddressTaken(), llvm::SlotIndexes::hasIndex(), I, instr_begin(), instr_end(), isLandingPad(), livein_begin(), livein_empty(), livein_end(), pred_begin(), pred_empty(), pred_end(), succ_begin(), succ_empty(), and succ_end().
Referenced by dump(), llvm::DOTGraphTraits< const MachineFunction * >::getNodeLabel(), and llvm::operator<<().
void MachineBasicBlock::printAsOperand | ( | raw_ostream & | OS, |
bool | PrintType = true |
||
) | const |
Definition at line 337 of file MachineBasicBlock.cpp.
References getNumber().
void llvm::MachineBasicBlock::push_back | ( | MachineInstr * | MI | ) | [inline] |
Definition at line 476 of file MachineBasicBlock.h.
References llvm::ilist< NodeTy >::push_back().
Referenced by ProcessSourceNode().
reverse_iterator llvm::MachineBasicBlock::rbegin | ( | ) | [inline] |
Definition at line 245 of file MachineBasicBlock.h.
References instr_rbegin().
Referenced by llvm::MipsInstrInfo::AnalyzeBranch(), FindLastAluClause(), and llvm::MipsInstrInfo::RemoveBranch().
const_reverse_iterator llvm::MachineBasicBlock::rbegin | ( | ) | const [inline] |
Definition at line 246 of file MachineBasicBlock.h.
References instr_rbegin().
MachineInstr* llvm::MachineBasicBlock::remove | ( | MachineInstr * | I | ) | [inline] |
Remove the unbundled instruction from the instruction list without deleting it.
This function can not be used to remove bundled instructions, use remove_instr to remove individual instructions from a bundle.
Definition at line 545 of file MachineBasicBlock.h.
References I, and llvm::iplist< NodeTy, Traits >::remove().
Remove the possibly bundled instruction from the instruction list without deleting it.
If the instruction is part of a bundle, the other instructions in the bundle will still be bundled after removing the single instruction.
Definition at line 961 of file MachineBasicBlock.cpp.
References llvm::MachineInstr::BundledPred, llvm::MachineInstr::BundledSucc, llvm::MachineInstr::clearFlag(), llvm::iplist< NodeTy, Traits >::remove(), and unbundleSingleMI().
removeFromParent - This method unlinks 'this' from the containing function, and returns it, but does not delete it.
Definition at line 982 of file MachineBasicBlock.cpp.
References getParent(), and llvm::MachineFunction::remove().
void MachineBasicBlock::removeLiveIn | ( | unsigned | Reg | ) |
removeLiveIn - Remove the specified register from the live in set.
Definition at line 341 of file MachineBasicBlock.cpp.
References I.
Referenced by emitGPDisp().
void MachineBasicBlock::removeSuccessor | ( | MachineBasicBlock * | succ | ) |
removeSuccessor - Remove successor from the successors list of this MachineBasicBlock. The Predecessors list of succ is automatically updated.
Definition at line 504 of file MachineBasicBlock.cpp.
References I.
Referenced by CorrectExtraCFGEdges(), llvm::TargetInstrInfo::ReplaceTailWithBranchTo(), transferSuccessors(), and transferSuccessorsAndUpdatePHIs().
removeSuccessor - Remove specified successor from the successors list of this MachineBasicBlock. The Predecessors list of succ is automatically updated. Return the iterator to the element after the one removed.
Definition at line 519 of file MachineBasicBlock.cpp.
reverse_iterator llvm::MachineBasicBlock::rend | ( | ) | [inline] |
Definition at line 247 of file MachineBasicBlock.h.
References instr_rend().
Referenced by llvm::MipsInstrInfo::AnalyzeBranch(), llvm::SIInstrInfo::copyPhysReg(), FindLastAluClause(), llvm::getFirstEpilogueInst(), and llvm::MipsInstrInfo::RemoveBranch().
const_reverse_iterator llvm::MachineBasicBlock::rend | ( | ) | const [inline] |
Definition at line 248 of file MachineBasicBlock.h.
References instr_rend().
void MachineBasicBlock::replaceSuccessor | ( | MachineBasicBlock * | Old, |
MachineBasicBlock * | New | ||
) |
replaceSuccessor - Replace successor OLD with NEW and update weight info.
Definition at line 532 of file MachineBasicBlock.cpp.
References I, succ_begin(), and succ_end().
Referenced by ReplaceUsesOfBlockWith().
void MachineBasicBlock::ReplaceUsesOfBlockWith | ( | MachineBasicBlock * | Old, |
MachineBasicBlock * | New | ||
) |
ReplaceUsesOfBlockWith - Given a machine basic block that branched to 'Old', change the code and CFG so that it branches to 'New' instead.
Definition at line 999 of file MachineBasicBlock.cpp.
References I, instr_begin(), instr_end(), and replaceSuccessor().
Referenced by SplitCriticalEdge().
void llvm::MachineBasicBlock::setAlignment | ( | unsigned | Align | ) | [inline] |
setAlignment - Set alignment of the basic block. The alignment is specified as log2(bytes).
Definition at line 350 of file MachineBasicBlock.h.
References Align().
void llvm::MachineBasicBlock::setHasAddressTaken | ( | ) | [inline] |
setHasAddressTaken - Set this block to reflect that it potentially is the target of an indirect branch.
Definition at line 133 of file MachineBasicBlock.h.
Referenced by llvm::HexagonTargetLowering::LowerBR_JT(), and llvm::FunctionLoweringInfo::set().
void llvm::MachineBasicBlock::setIsLandingPad | ( | bool | V = true | ) | [inline] |
setIsLandingPad - Indicates the block is a landing pad. That is this basic block is entered via an exception handler.
Definition at line 358 of file MachineBasicBlock.h.
void llvm::MachineBasicBlock::setNumber | ( | int | N | ) | [inline] |
Definition at line 645 of file MachineBasicBlock.h.
void MachineBasicBlock::setSuccWeight | ( | succ_iterator | I, |
uint32_t | weight | ||
) |
Set successor weight of a given iterator.
Definition at line 1109 of file MachineBasicBlock.cpp.
Referenced by ScaleWeights().
unsigned llvm::MachineBasicBlock::size | ( | ) | const [inline] |
Definition at line 219 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::size().
Referenced by llvm::AggressiveAntiDepState::AggressiveAntiDepState(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::CriticalAntiDepBreaker::StartBlock(), and llvm::AggressiveAntiDepBreaker::StartBlock().
SkipPHIsAndLabels - Return the first instruction in MBB after I that is not a PHI or a label. This is the correct point to insert copies at the beginning of a basic block.
Definition at line 165 of file MachineBasicBlock.cpp.
Referenced by addLiveIn(), findInsertLocation(), llvm::findPHICopyInsertPoint(), and llvm::SplitEditor::leaveIntvAtTop().
void llvm::MachineBasicBlock::splice | ( | iterator | Where, |
MachineBasicBlock * | Other, | ||
iterator | From | ||
) | [inline] |
Take an instruction from MBB 'Other' at the position From, and insert it into this MBB right before 'Where'.
If From points to a bundle of instructions, the whole bundle is moved.
Definition at line 565 of file MachineBasicBlock.h.
Referenced by llvm::PPCTargetLowering::EmitAtomicBinary(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::XCoreTargetLowering::EmitInstrWithCustomInserter(), llvm::MSP430TargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitPartwordAtomicBinary(), llvm::MSP430TargetLowering::EmitShiftInstr(), EmitXBegin(), llvm::SparcTargetLowering::expandAtomicRMW(), llvm::SparcTargetLowering::expandSelectCC(), llvm::ScheduleDAGMI::moveInstruction(), llvm::ScheduleDAGMI::placeDebugValues(), splitBlockAfter(), and splitBlockBefore().
void llvm::MachineBasicBlock::splice | ( | iterator | Where, |
MachineBasicBlock * | Other, | ||
iterator | From, | ||
iterator | To | ||
) | [inline] |
Take a block of instructions from MBB 'Other' in the range [From, To), and insert them into this MBB right before 'Where'.
The instruction at 'Where' must not be included in the range of instructions to move.
Definition at line 576 of file MachineBasicBlock.h.
References llvm::iplist< NodeTy, Traits >::splice().
MachineBasicBlock * MachineBasicBlock::SplitCriticalEdge | ( | MachineBasicBlock * | Succ, |
Pass * | P | ||
) |
SplitCriticalEdge - Split the critical edge from this block to the given successor block, and return the newly created block, or null if splitting is not possible.
This function updates LiveVariables, MachineDominatorTree, and MachineLoopInfo, as applicable.
Definition at line 679 of file MachineBasicBlock.cpp.
References addLiveIn(), llvm::LiveVariables::addNewBlock(), llvm::LiveRange::addSegment(), addSuccessor(), llvm::TargetInstrInfo::AnalyzeBranch(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T >::begin(), llvm::SmallVectorImpl< T >::clear(), llvm::SmallSet< T, N, C >::count(), llvm::MachineFunction::CreateMachineBasicBlock(), llvm::dbgs(), DEBUG, llvm::SmallVectorTemplateCommon< T >::end(), llvm::SmallVectorTemplateCommon< T, typename >::end(), end(), llvm::MachineFunction::end(), llvm::Pass::getAnalysisIfAvailable(), getFirstInstrTerminator(), getFirstTerminator(), llvm::TargetSubtargetInfo::getInstrInfo(), getNumber(), llvm::MachineRegisterInfo::getNumVirtRegs(), getParent(), llvm::SlotIndex::getPrevSlot(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineFunction::getTarget(), llvm::LiveVariables::getVarInfo(), llvm::LiveRange::getVNInfoAt(), I, llvm::TargetRegisterInfo::index2VirtReg(), llvm::SmallSet< T, N, C >::insert(), llvm::MachineFunction::insert(), llvm::TargetInstrInfo::InsertBranch(), llvm::SlotIndexes::insertMBBInMaps(), instr_begin(), instr_end(), isLandingPad(), isLayoutSuccessor(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::MachineOperand::isUndef(), llvm::TargetRegisterInfo::isVirtualRegister(), llvm::LiveVariables::VarInfo::Kills, LI, llvm::LiveRange::liveAt(), livein_begin(), livein_end(), llvm::MachineInstr::operands_begin(), llvm::MachineInstr::operands_end(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::LiveVariables::VarInfo::removeKill(), llvm::LiveRange::removeSegment(), ReplaceUsesOfBlockWith(), llvm::TargetMachine::requiresStructuredCFG(), TII, and updateTerminator().
succ_iterator llvm::MachineBasicBlock::succ_begin | ( | ) | [inline] |
Definition at line 286 of file MachineBasicBlock.h.
Referenced by llvm::LivePhysRegs::addLiveOuts(), llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), BBHasFallthrough(), BBIsJumpedOver(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::BlkSucc_begin(), bothUsedInPHI(), checkAndUpdateEFLAGSKill(), llvm::GraphTraits< MachineBlockFrequencyInfo * >::child_begin(), llvm::GraphTraits< MachineBasicBlock * >::child_begin(), llvm::GraphTraits< const MachineBasicBlock * >::child_begin(), CorrectExtraCFGEdges(), findFalseBlock(), llvm::MachineBranchProbabilityInfo::getEdgeWeight(), llvm::MachineBranchProbabilityInfo::getHotSucc(), getLandingPadSuccessor(), llvm::MachineBranchProbabilityInfo::getSumForBlock(), llvm::MachineTraceMetrics::Ensemble::invalidate(), isCCLiveOut(), llvm::LiveVariables::isLiveOut(), isSuccessor(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), OtherSucc(), print(), llvm::LiveIntervals::pruneValue(), replaceSuccessor(), llvm::TargetInstrInfo::ReplaceTailWithBranchTo(), ScaleWeights(), llvm::CriticalAntiDepBreaker::StartBlock(), llvm::AggressiveAntiDepBreaker::StartBlock(), llvm::ScheduleDAGInstrs::startBlockForKills(), successors(), transferSuccessors(), transferSuccessorsAndUpdatePHIs(), and updateTerminator().
const_succ_iterator llvm::MachineBasicBlock::succ_begin | ( | ) | const [inline] |
Definition at line 287 of file MachineBasicBlock.h.
bool llvm::MachineBasicBlock::succ_empty | ( | ) | const [inline] |
Definition at line 301 of file MachineBasicBlock.h.
Referenced by llvm::ScheduleDAGSDNodes::computeOperandLatency(), print(), llvm::TargetInstrInfo::ReplaceTailWithBranchTo(), transferSuccessors(), transferSuccessorsAndUpdatePHIs(), and updateTerminator().
succ_iterator llvm::MachineBasicBlock::succ_end | ( | ) | [inline] |
Definition at line 288 of file MachineBasicBlock.h.
Referenced by llvm::LivePhysRegs::addLiveOuts(), llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), BBHasFallthrough(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::BlkSucc_end(), bothUsedInPHI(), checkAndUpdateEFLAGSKill(), llvm::GraphTraits< MachineBlockFrequencyInfo * >::child_end(), llvm::GraphTraits< MachineBasicBlock * >::child_end(), llvm::GraphTraits< const MachineBasicBlock * >::child_end(), CorrectExtraCFGEdges(), findFalseBlock(), llvm::MachineBranchProbabilityInfo::getEdgeWeight(), llvm::MachineBranchProbabilityInfo::getHotSucc(), getLandingPadSuccessor(), llvm::MachineBranchProbabilityInfo::getSumForBlock(), llvm::MachineTraceMetrics::Ensemble::invalidate(), isCCLiveOut(), llvm::LiveVariables::isLiveOut(), isSuccessor(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), OtherSucc(), print(), llvm::LiveIntervals::pruneValue(), replaceSuccessor(), ScaleWeights(), llvm::CriticalAntiDepBreaker::StartBlock(), llvm::AggressiveAntiDepBreaker::StartBlock(), llvm::ScheduleDAGInstrs::startBlockForKills(), successors(), and updateTerminator().
const_succ_iterator llvm::MachineBasicBlock::succ_end | ( | ) | const [inline] |
Definition at line 289 of file MachineBasicBlock.h.
Definition at line 290 of file MachineBasicBlock.h.
const_succ_reverse_iterator llvm::MachineBasicBlock::succ_rbegin | ( | ) | const [inline] |
Definition at line 292 of file MachineBasicBlock.h.
succ_reverse_iterator llvm::MachineBasicBlock::succ_rend | ( | ) | [inline] |
Definition at line 294 of file MachineBasicBlock.h.
const_succ_reverse_iterator llvm::MachineBasicBlock::succ_rend | ( | ) | const [inline] |
Definition at line 296 of file MachineBasicBlock.h.
unsigned llvm::MachineBasicBlock::succ_size | ( | ) | const [inline] |
Definition at line 298 of file MachineBasicBlock.h.
Referenced by BBIsJumpedOver(), getLandingPadSuccessor(), llvm::RegionTraits< MachineFunction >::getNumSuccessors(), llvm::MachineBranchProbabilityInfo::getSumForBlock(), and isSplitEdge().
iterator_range<succ_iterator> llvm::MachineBasicBlock::successors | ( | ) | [inline] |
Definition at line 309 of file MachineBasicBlock.h.
References succ_begin(), and succ_end().
Referenced by BBHasFallthrough(), and llvm::AArch64InstrInfo::optimizeCompareInstr().
iterator_range<const_succ_iterator> llvm::MachineBasicBlock::successors | ( | ) | const [inline] |
Definition at line 312 of file MachineBasicBlock.h.
References succ_begin(), and succ_end().
iterator_range<iterator> llvm::MachineBasicBlock::terminators | ( | ) | [inline] |
Definition at line 250 of file MachineBasicBlock.h.
References end(), and getFirstTerminator().
Referenced by llvm::AsmPrinter::isBlockOnlyReachableByFallthrough().
iterator_range<const_iterator> llvm::MachineBasicBlock::terminators | ( | ) | const [inline] |
Definition at line 253 of file MachineBasicBlock.h.
References end(), and getFirstTerminator().
void MachineBasicBlock::transferSuccessors | ( | MachineBasicBlock * | fromMBB | ) |
transferSuccessors - Transfers all the successors from MBB to this machine basic block (i.e., copies all the successors fromMBB and remove all the successors from fromMBB).
Definition at line 582 of file MachineBasicBlock.cpp.
References addSuccessor(), removeSuccessor(), succ_begin(), and succ_empty().
void MachineBasicBlock::transferSuccessorsAndUpdatePHIs | ( | MachineBasicBlock * | fromMBB | ) |
transferSuccessorsAndUpdatePHIs - Transfers all the successors, as in transferSuccessors, and update PHI operands in the successor blocks which refer to fromMBB to refer to this.
Definition at line 600 of file MachineBasicBlock.cpp.
References addSuccessor(), llvm::MachineOperand::getMBB(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), instr_begin(), instr_end(), llvm::MachineInstr::isPHI(), llvm::AArch64CC::MI, removeSuccessor(), llvm::MachineOperand::setMBB(), succ_begin(), and succ_empty().
Referenced by llvm::PPCTargetLowering::EmitAtomicBinary(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::XCoreTargetLowering::EmitInstrWithCustomInserter(), llvm::MSP430TargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitPartwordAtomicBinary(), llvm::MSP430TargetLowering::EmitShiftInstr(), EmitXBegin(), llvm::SparcTargetLowering::expandAtomicRMW(), llvm::SparcTargetLowering::expandSelectCC(), splitBlockAfter(), and splitBlockBefore().
void MachineBasicBlock::updateTerminator | ( | ) |
updateTerminator - Update the terminator instructions in block to account for changes to the layout. If the block previously used a fallthrough, it may now need a branch, and if it previously used branching it may now be able to use a fallthrough.
Definition at line 394 of file MachineBasicBlock.cpp.
References llvm::TargetInstrInfo::AnalyzeBranch(), canFallThrough(), llvm::SmallVectorImpl< T >::clear(), llvm::SmallVectorBase::empty(), llvm::TargetSubtargetInfo::getInstrInfo(), getParent(), llvm::MachineFunction::getSubtarget(), llvm::TargetInstrInfo::InsertBranch(), isLayoutSuccessor(), llvm::TargetInstrInfo::RemoveBranch(), llvm::TargetInstrInfo::ReverseBranchCondition(), succ_begin(), succ_empty(), succ_end(), and TII.
Referenced by SplitCriticalEdge().
friend struct ilist_traits< MachineBasicBlock > [friend] |
Definition at line 667 of file MachineBasicBlock.h.
friend class MachineBranchProbabilityInfo [friend] |
Definition at line 658 of file MachineBasicBlock.h.
friend class MachineFunction [friend] |
Definition at line 110 of file MachineBasicBlock.h.