LLVM 20.0.0git
|
This class provides the reaching def analysis. More...
#include "llvm/CodeGen/ReachingDefAnalysis.h"
Public Member Functions | |
ReachingDefAnalysis () | |
void | releaseMemory () override |
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memory when it is no longer needed. | |
void | getAnalysisUsage (AnalysisUsage &AU) const override |
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this. | |
bool | runOnMachineFunction (MachineFunction &MF) override |
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis. | |
MachineFunctionProperties | getRequiredProperties () const override |
void | reset () |
Re-run the analysis. | |
void | init () |
Initialize data structures. | |
void | traverse () |
Traverse the machine function, mapping definitions. | |
int | getReachingDef (MachineInstr *MI, MCRegister PhysReg) const |
Provides the instruction id of the closest reaching def instruction of PhysReg that reaches MI, relative to the begining of MI's basic block. | |
bool | hasSameReachingDef (MachineInstr *A, MachineInstr *B, MCRegister PhysReg) const |
Return whether A and B use the same def of PhysReg. | |
bool | isReachingDefLiveOut (MachineInstr *MI, MCRegister PhysReg) const |
Return whether the reaching def for MI also is live out of its parent block. | |
MachineInstr * | getLocalLiveOutMIDef (MachineBasicBlock *MBB, MCRegister PhysReg) const |
Return the local MI that produces the live out value for PhysReg, or nullptr for a non-live out or non-local def. | |
MachineInstr * | getUniqueReachingMIDef (MachineInstr *MI, MCRegister PhysReg) const |
If a single MachineInstr creates the reaching definition, then return it. | |
MachineInstr * | getMIOperand (MachineInstr *MI, unsigned Idx) const |
If a single MachineInstr creates the reaching definition, for MIs operand at Idx, then return it. | |
MachineInstr * | getMIOperand (MachineInstr *MI, MachineOperand &MO) const |
If a single MachineInstr creates the reaching definition, for MIs MO, then return it. | |
bool | hasLocalDefBefore (MachineInstr *MI, MCRegister PhysReg) const |
Provide whether the register has been defined in the same basic block as, and before, MI. | |
bool | isRegUsedAfter (MachineInstr *MI, MCRegister PhysReg) const |
Return whether the given register is used after MI, whether it's a local use or a live out. | |
bool | isRegDefinedAfter (MachineInstr *MI, MCRegister PhysReg) const |
Return whether the given register is defined after MI. | |
int | getClearance (MachineInstr *MI, MCRegister PhysReg) const |
Provides the clearance - the number of instructions since the closest reaching def instuction of PhysReg that reaches MI. | |
void | getReachingLocalUses (MachineInstr *MI, MCRegister PhysReg, InstSet &Uses) const |
Provides the uses, in the same block as MI, of register that MI defines. | |
void | getLiveOuts (MachineBasicBlock *MBB, MCRegister PhysReg, InstSet &Defs, BlockSet &VisitedBBs) const |
Search MBB for a definition of PhysReg and insert it into Defs. | |
void | getLiveOuts (MachineBasicBlock *MBB, MCRegister PhysReg, InstSet &Defs) const |
bool | getLiveInUses (MachineBasicBlock *MBB, MCRegister PhysReg, InstSet &Uses) const |
For the given block, collect the instructions that use the live-in value of the provided register. | |
void | getGlobalUses (MachineInstr *MI, MCRegister PhysReg, InstSet &Uses) const |
Collect the users of the value stored in PhysReg, which is defined by MI. | |
void | getGlobalReachingDefs (MachineInstr *MI, MCRegister PhysReg, InstSet &Defs) const |
Collect all possible definitions of the value stored in PhysReg, which is used by MI. | |
bool | isSafeToMoveForwards (MachineInstr *From, MachineInstr *To) const |
Return whether From can be moved forwards to just before To. | |
bool | isSafeToMoveBackwards (MachineInstr *From, MachineInstr *To) const |
Return whether From can be moved backwards to just after To. | |
void | collectKilledOperands (MachineInstr *MI, InstSet &Dead) const |
Assuming MI is dead, recursively search the incoming operands which are killed by MI and collect those that would become dead. | |
bool | isSafeToRemove (MachineInstr *MI, InstSet &ToRemove) const |
Return whether removing this instruction will have no effect on the program, returning the redundant use-def chain. | |
bool | isSafeToRemove (MachineInstr *MI, InstSet &ToRemove, InstSet &Ignore) const |
Return whether removing this instruction will have no effect on the program, ignoring the possible effects on some instructions, returning the redundant use-def chain. | |
bool | isSafeToDefRegAt (MachineInstr *MI, MCRegister PhysReg) const |
Return whether a MachineInstr could be inserted at MI and safely define the given register without affecting the program. | |
bool | isSafeToDefRegAt (MachineInstr *MI, MCRegister PhysReg, InstSet &Ignore) const |
Return whether a MachineInstr could be inserted at MI and safely define the given register without affecting the program, ignoring any effects on the provided instructions. | |
Public Member Functions inherited from llvm::MachineFunctionPass | |
bool | doInitialization (Module &) override |
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before any pass is run. | |
Public Member Functions inherited from llvm::FunctionPass | |
FunctionPass (char &pid) | |
Pass * | createPrinterPass (raw_ostream &OS, const std::string &Banner) const override |
createPrinterPass - Get a function printer pass. | |
virtual bool | runOnFunction (Function &F)=0 |
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass. | |
void | assignPassManager (PMStack &PMS, PassManagerType T) override |
Find appropriate Function Pass Manager or Call Graph Pass Manager in the PM Stack and add self into that manager. | |
PassManagerType | getPotentialPassManagerType () const override |
Return what kind of Pass Manager can manage this pass. | |
Public Member Functions inherited from llvm::Pass | |
Pass (PassKind K, char &pid) | |
Pass (const Pass &)=delete | |
Pass & | operator= (const Pass &)=delete |
virtual | ~Pass () |
PassKind | getPassKind () const |
virtual StringRef | getPassName () const |
getPassName - Return a nice clean name for a pass. | |
AnalysisID | getPassID () const |
getPassID - Return the PassID number that corresponds to this pass. | |
virtual bool | doInitialization (Module &) |
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before any pass is run. | |
virtual bool | doFinalization (Module &) |
doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes have run. | |
virtual void | print (raw_ostream &OS, const Module *M) const |
print - Print out the internal state of the pass. | |
void | dump () const |
virtual Pass * | createPrinterPass (raw_ostream &OS, const std::string &Banner) const =0 |
createPrinterPass - Get a Pass appropriate to print the IR this pass operates on (Module, Function or MachineFunction). | |
virtual void | assignPassManager (PMStack &, PassManagerType) |
Each pass is responsible for assigning a pass manager to itself. | |
virtual void | preparePassManager (PMStack &) |
Check if available pass managers are suitable for this pass or not. | |
virtual PassManagerType | getPotentialPassManagerType () const |
Return what kind of Pass Manager can manage this pass. | |
void | setResolver (AnalysisResolver *AR) |
AnalysisResolver * | getResolver () const |
virtual void | getAnalysisUsage (AnalysisUsage &) const |
getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. | |
virtual void | releaseMemory () |
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memory when it is no longer needed. | |
virtual void * | getAdjustedAnalysisPointer (AnalysisID ID) |
getAdjustedAnalysisPointer - This method is used when a pass implements an analysis interface through multiple inheritance. | |
virtual ImmutablePass * | getAsImmutablePass () |
virtual PMDataManager * | getAsPMDataManager () |
virtual void | verifyAnalysis () const |
verifyAnalysis() - This member can be implemented by a analysis pass to check state of analysis information. | |
virtual void | dumpPassStructure (unsigned Offset=0) |
template<typename AnalysisType > | |
AnalysisType * | getAnalysisIfAvailable () const |
getAnalysisIfAvailable<AnalysisType>() - Subclasses use this function to get analysis information that might be around, for example to update it. | |
bool | mustPreserveAnalysisID (char &AID) const |
mustPreserveAnalysisID - This method serves the same function as getAnalysisIfAvailable, but works if you just have an AnalysisID. | |
template<typename AnalysisType > | |
AnalysisType & | getAnalysis () const |
getAnalysis<AnalysisType>() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
template<typename AnalysisType > | |
AnalysisType & | getAnalysis (Function &F, bool *Changed=nullptr) |
getAnalysis<AnalysisType>() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
template<typename AnalysisType > | |
AnalysisType & | getAnalysisID (AnalysisID PI) const |
template<typename AnalysisType > | |
AnalysisType & | getAnalysisID (AnalysisID PI, Function &F, bool *Changed=nullptr) |
Static Public Attributes | |
static char | ID = 0 |
Additional Inherited Members | |
Static Public Member Functions inherited from llvm::Pass | |
static const PassInfo * | lookupPassInfo (const void *TI) |
static const PassInfo * | lookupPassInfo (StringRef Arg) |
static Pass * | createPass (AnalysisID ID) |
Protected Member Functions inherited from llvm::MachineFunctionPass | |
MachineFunctionPass (char &ID) | |
virtual bool | runOnMachineFunction (MachineFunction &MF)=0 |
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis. | |
void | getAnalysisUsage (AnalysisUsage &AU) const override |
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this. | |
virtual MachineFunctionProperties | getRequiredProperties () const |
virtual MachineFunctionProperties | getSetProperties () const |
virtual MachineFunctionProperties | getClearedProperties () const |
Protected Member Functions inherited from llvm::FunctionPass | |
bool | skipFunction (const Function &F) const |
Optional passes call this function to check whether the pass should be skipped. | |
This class provides the reaching def analysis.
Definition at line 113 of file ReachingDefAnalysis.h.
|
inline |
Definition at line 151 of file ReachingDefAnalysis.h.
References llvm::PassRegistry::getPassRegistry(), and llvm::initializeReachingDefAnalysisPass().
void ReachingDefAnalysis::collectKilledOperands | ( | MachineInstr * | MI, |
InstSet & | Dead | ||
) | const |
Assuming MI is dead, recursively search the incoming operands which are killed by MI and collect those that would become dead.
Definition at line 650 of file ReachingDefAnalysis.cpp.
References collectKilledOperands(), getGlobalUses(), getMIOperand(), IsDead, isValidRegDef(), isValidRegUse(), mayHaveSideEffects(), MI, llvm::set_is_subset(), and Uses.
Referenced by collectKilledOperands(), and if().
|
inlineoverridevirtual |
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
For MachineFunctionPasses, calling AU.preservesCFG() indicates that the pass does not modify the MachineBasicBlock CFG.
Reimplemented from llvm::MachineFunctionPass.
Definition at line 156 of file ReachingDefAnalysis.h.
References llvm::MachineFunctionPass::getAnalysisUsage(), and llvm::AnalysisUsage::setPreservesAll().
int ReachingDefAnalysis::getClearance | ( | MachineInstr * | MI, |
MCRegister | PhysReg | ||
) | const |
Provides the clearance - the number of instructions since the closest reaching def instuction of PhysReg that reaches MI.
Definition at line 321 of file ReachingDefAnalysis.cpp.
References assert(), getReachingDef(), and MI.
void ReachingDefAnalysis::getGlobalReachingDefs | ( | MachineInstr * | MI, |
MCRegister | PhysReg, | ||
InstSet & | Defs | ||
) | const |
Collect all possible definitions of the value stored in PhysReg, which is used by MI.
Definition at line 401 of file ReachingDefAnalysis.cpp.
References getLiveOuts(), getUniqueReachingMIDef(), llvm::SmallPtrSetImpl< PtrType >::insert(), MBB, and MI.
Referenced by producesFalseLanesZero().
void ReachingDefAnalysis::getGlobalUses | ( | MachineInstr * | MI, |
MCRegister | PhysReg, | ||
InstSet & | Uses | ||
) | const |
Collect the users of the value stored in PhysReg, which is defined by MI.
Definition at line 376 of file ReachingDefAnalysis.cpp.
References llvm::append_range(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::SmallVectorBase< Size_T >::empty(), getLiveInUses(), getLocalLiveOutMIDef(), getReachingLocalUses(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::MachineBasicBlock::isLiveIn(), MBB, MI, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::MachineBasicBlock::successors(), and Uses.
Referenced by collectKilledOperands(), and isSafeToDefRegAt().
bool ReachingDefAnalysis::getLiveInUses | ( | MachineBasicBlock * | MBB, |
MCRegister | PhysReg, | ||
InstSet & | Uses | ||
) | const |
For the given block, collect the instructions that use the live-in value of the provided register.
Return whether the value is still live on exit.
Definition at line 357 of file ReachingDefAnalysis.cpp.
References llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::getLastNonDebugInstr(), getReachingDef(), llvm::MachineBasicBlock::instr_begin(), llvm::MachineBasicBlock::instr_end(), llvm::instructionsWithoutDebug(), isReachingDefLiveOut(), isValidRegUseOf(), llvm::Last, MBB, MI, and Uses.
Referenced by getGlobalUses().
void ReachingDefAnalysis::getLiveOuts | ( | MachineBasicBlock * | MBB, |
MCRegister | PhysReg, | ||
InstSet & | Defs | ||
) | const |
Definition at line 413 of file ReachingDefAnalysis.cpp.
References getLiveOuts(), and MBB.
void ReachingDefAnalysis::getLiveOuts | ( | MachineBasicBlock * | MBB, |
MCRegister | PhysReg, | ||
InstSet & | Defs, | ||
BlockSet & | VisitedBBs | ||
) | const |
Search MBB for a definition of PhysReg and insert it into Defs.
If no definition is found, recursively search the predecessor blocks for them.
Definition at line 419 of file ReachingDefAnalysis.cpp.
References llvm::LiveRegUnits::addLiveOuts(), llvm::LiveRegUnits::available(), llvm::SmallPtrSetImpl< PtrType >::count(), getLiveOuts(), getLocalLiveOutMIDef(), llvm::SmallPtrSetImpl< PtrType >::insert(), MBB, and llvm::MachineBasicBlock::predecessors().
Referenced by getGlobalReachingDefs(), getLiveOuts(), and getUniqueReachingMIDef().
MachineInstr * ReachingDefAnalysis::getLocalLiveOutMIDef | ( | MachineBasicBlock * | MBB, |
MCRegister | PhysReg | ||
) | const |
Return the local MI that produces the live out value for PhysReg, or nullptr for a non-live out or non-local def.
Definition at line 528 of file ReachingDefAnalysis.cpp.
References llvm::LiveRegUnits::addLiveOuts(), llvm::LiveRegUnits::available(), llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::getLastNonDebugInstr(), getReachingDef(), isValidRegDefOf(), llvm::Last, and MBB.
Referenced by getGlobalUses(), getLiveOuts(), and isRegDefinedAfter().
MachineInstr * ReachingDefAnalysis::getMIOperand | ( | MachineInstr * | MI, |
MachineOperand & | MO | ||
) | const |
If a single MachineInstr creates the reaching definition, for MIs MO, then return it.
Otherwise return null.
Definition at line 465 of file ReachingDefAnalysis.cpp.
References assert(), llvm::MachineOperand::getReg(), getUniqueReachingMIDef(), llvm::MachineOperand::isReg(), and MI.
MachineInstr * ReachingDefAnalysis::getMIOperand | ( | MachineInstr * | MI, |
unsigned | Idx | ||
) | const |
If a single MachineInstr creates the reaching definition, for MIs operand at Idx, then return it.
Otherwise return null.
Definition at line 459 of file ReachingDefAnalysis.cpp.
References assert(), getUniqueReachingMIDef(), Idx, and MI.
Referenced by collectKilledOperands().
int ReachingDefAnalysis::getReachingDef | ( | MachineInstr * | MI, |
MCRegister | PhysReg | ||
) | const |
Provides the instruction id of the closest reaching def instruction of PhysReg that reaches MI, relative to the begining of MI's basic block.
Definition at line 263 of file ReachingDefAnalysis.cpp.
References assert(), llvm::MBBReachingDefsInfo::defs(), MI, llvm::MBBReachingDefsInfo::numBlockIDs(), and llvm::MCRegisterInfo::regunits().
Referenced by getClearance(), getLiveInUses(), getLocalLiveOutMIDef(), hasLocalDefBefore(), hasSameReachingDef(), isReachingDefLiveOut(), and isRegDefinedAfter().
void ReachingDefAnalysis::getReachingLocalUses | ( | MachineInstr * | MI, |
MCRegister | PhysReg, | ||
InstSet & | Uses | ||
) | const |
Provides the uses, in the same block as MI, of register that MI defines.
This does not consider live-outs.
Definition at line 332 of file ReachingDefAnalysis.cpp.
References llvm::MachineBasicBlock::end(), isValidRegUseOf(), MBB, MI, and Uses.
Referenced by getGlobalUses().
|
inlineoverridevirtual |
Reimplemented from llvm::MachineFunctionPass.
Definition at line 163 of file ReachingDefAnalysis.h.
References llvm::MachineFunctionProperties::NoVRegs, llvm::MachineFunctionProperties::set(), and llvm::MachineFunctionProperties::TracksLiveness.
MachineInstr * ReachingDefAnalysis::getUniqueReachingMIDef | ( | MachineInstr * | MI, |
MCRegister | PhysReg | ||
) | const |
If a single MachineInstr creates the reaching definition, then return it.
Otherwise return null.
Definition at line 439 of file ReachingDefAnalysis.cpp.
References getLiveOuts(), MI, and llvm::MachineBasicBlock::predecessors().
Referenced by getGlobalReachingDefs(), and getMIOperand().
bool ReachingDefAnalysis::hasLocalDefBefore | ( | MachineInstr * | MI, |
MCRegister | PhysReg | ||
) | const |
Provide whether the register has been defined in the same basic block as, and before, MI.
Definition at line 327 of file ReachingDefAnalysis.cpp.
References getReachingDef(), and MI.
bool ReachingDefAnalysis::hasSameReachingDef | ( | MachineInstr * | A, |
MachineInstr * | B, | ||
MCRegister | PhysReg | ||
) | const |
Return whether A and B use the same def of PhysReg.
Definition at line 291 of file ReachingDefAnalysis.cpp.
References A, B, and getReachingDef().
void ReachingDefAnalysis::init | ( | ) |
Initialize data structures.
Definition at line 235 of file ReachingDefAnalysis.cpp.
References llvm::MachineFunction::getNumBlockIDs(), llvm::MCRegisterInfo::getNumRegUnits(), llvm::MBBReachingDefsInfo::init(), llvm::SmallVectorImpl< T >::resize(), and llvm::LoopTraversal::traverse().
Referenced by reset(), and runOnMachineFunction().
bool ReachingDefAnalysis::isReachingDefLiveOut | ( | MachineInstr * | MI, |
MCRegister | PhysReg | ||
) | const |
Return whether the reaching def for MI also is live out of its parent block.
Definition at line 506 of file ReachingDefAnalysis.cpp.
References llvm::LiveRegUnits::addLiveOuts(), llvm::LiveRegUnits::available(), llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::getLastNonDebugInstr(), getReachingDef(), isValidRegDefOf(), llvm::Last, MBB, and MI.
Referenced by getLiveInUses().
bool ReachingDefAnalysis::isRegDefinedAfter | ( | MachineInstr * | MI, |
MCRegister | PhysReg | ||
) | const |
Return whether the given register is defined after MI.
Definition at line 492 of file ReachingDefAnalysis.cpp.
References llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::getLastNonDebugInstr(), getLocalLiveOutMIDef(), getReachingDef(), llvm::Last, MBB, and MI.
Referenced by isSafeToDefRegAt().
bool ReachingDefAnalysis::isRegUsedAfter | ( | MachineInstr * | MI, |
MCRegister | PhysReg | ||
) | const |
Return whether the given register is used after MI, whether it's a local use or a live out.
Definition at line 471 of file ReachingDefAnalysis.cpp.
References llvm::LiveRegUnits::addLiveOuts(), llvm::LiveRegUnits::available(), llvm::MachineBasicBlock::instr_rbegin(), llvm::MachineBasicBlock::instr_rend(), llvm::instructionsWithoutDebug(), llvm::Last, MBB, MI, and llvm::LiveRegUnits::stepBackward().
Referenced by isSafeToDefRegAt().
bool ReachingDefAnalysis::isSafeToDefRegAt | ( | MachineInstr * | MI, |
MCRegister | PhysReg | ||
) | const |
Return whether a MachineInstr could be inserted at MI and safely define the given register without affecting the program.
Definition at line 682 of file ReachingDefAnalysis.cpp.
References Ignore, isSafeToDefRegAt(), and MI.
Referenced by isSafeToDefRegAt().
bool ReachingDefAnalysis::isSafeToDefRegAt | ( | MachineInstr * | MI, |
MCRegister | PhysReg, | ||
InstSet & | Ignore | ||
) | const |
Return whether a MachineInstr could be inserted at MI and safely define the given register without affecting the program, ignoring any effects on the provided instructions.
Definition at line 688 of file ReachingDefAnalysis.cpp.
References llvm::MachineBasicBlock::end(), getGlobalUses(), I, Ignore, isRegDefinedAfter(), isRegUsedAfter(), isValidRegDefOf(), MBB, MI, llvm::set_is_subset(), and Uses.
bool ReachingDefAnalysis::isSafeToMoveBackwards | ( | MachineInstr * | From, |
MachineInstr * | To | ||
) | const |
Return whether From can be moved backwards to just after To.
Definition at line 596 of file ReachingDefAnalysis.cpp.
bool ReachingDefAnalysis::isSafeToMoveForwards | ( | MachineInstr * | From, |
MachineInstr * | To | ||
) | const |
Return whether From can be moved forwards to just before To.
Definition at line 586 of file ReachingDefAnalysis.cpp.
bool ReachingDefAnalysis::isSafeToRemove | ( | MachineInstr * | MI, |
InstSet & | ToRemove | ||
) | const |
Return whether removing this instruction will have no effect on the program, returning the redundant use-def chain.
Definition at line 606 of file ReachingDefAnalysis.cpp.
References Ignore, isSafeToRemove(), MI, and ToRemove.
Referenced by isSafeToRemove().
bool ReachingDefAnalysis::isSafeToRemove | ( | MachineInstr * | MI, |
InstSet & | ToRemove, | ||
InstSet & | Ignore | ||
) | const |
Return whether removing this instruction will have no effect on the program, ignoring the possible effects on some instructions, returning the redundant use-def chain.
Definition at line 614 of file ReachingDefAnalysis.cpp.
References Ignore, isSafeToRemove(), MI, and ToRemove.
|
overridevirtual |
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memory when it is no longer needed.
The default behavior of passes is to hold onto memory for the entire duration of their lifetime (which is the entire compile time). For pipelined passes, this is not a big deal because that memory gets recycled every time the pass is invoked on another program unit. For IP passes, it is more important to free memory when it is unused.
Optionally implement this function to release pass memory when it is no longer used.
Reimplemented from llvm::Pass.
Definition at line 221 of file ReachingDefAnalysis.cpp.
References llvm::SmallVectorImpl< T >::clear(), and llvm::MBBReachingDefsInfo::clear().
Referenced by reset().
void ReachingDefAnalysis::reset | ( | ) |
Re-run the analysis.
Definition at line 229 of file ReachingDefAnalysis.cpp.
References init(), releaseMemory(), and traverse().
|
overridevirtual |
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis.
Implements llvm::MachineFunctionPass.
Definition at line 212 of file ReachingDefAnalysis.cpp.
References llvm::dbgs(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), init(), LLVM_DEBUG, and traverse().
void ReachingDefAnalysis::traverse | ( | ) |
Traverse the machine function, mapping definitions.
Definition at line 244 of file ReachingDefAnalysis.cpp.
References assert(), llvm::MBBReachingDefsInfo::defs(), and llvm::MachineFunction::getNumBlockIDs().
Referenced by reset(), and runOnMachineFunction().
|
static |
Definition at line 149 of file ReachingDefAnalysis.h.