LLVM 20.0.0git
|
Manage lifetime of a slot tracker for printing IR. More...
#include "llvm/IR/ModuleSlotTracker.h"
Public Types | |
using | MachineMDNodeListType = std::vector< std::pair< unsigned, const MDNode * > > |
Public Member Functions | |
ModuleSlotTracker (SlotTracker &Machine, const Module *M, const Function *F=nullptr) | |
Wrap a preinitialized SlotTracker. | |
ModuleSlotTracker (const Module *M, bool ShouldInitializeAllMetadata=true) | |
Construct a slot tracker from a module. | |
virtual | ~ModuleSlotTracker () |
Destructor to clean up storage. | |
SlotTracker * | getMachine () |
Lazily creates a slot tracker. | |
const Module * | getModule () const |
const Function * | getCurrentFunction () const |
void | incorporateFunction (const Function &F) |
Incorporate the given function. | |
int | getLocalSlot (const Value *V) |
Return the slot number of the specified local value. | |
void | setProcessHook (std::function< void(AbstractSlotTrackerStorage *, const Module *, bool)>) |
void | setProcessHook (std::function< void(AbstractSlotTrackerStorage *, const Function *, bool)>) |
void | collectMDNodes (MachineMDNodeListType &L, unsigned LB, unsigned UB) const |
Manage lifetime of a slot tracker for printing IR.
Wrapper around the SlotTracker used internally by AsmWriter. This class allows callers to share the cost of incorporating the metadata in a module or a function.
If the IR changes from underneath ModuleSlotTracker, strings like "<badref>" will be printed, or, worse, the wrong slots entirely.
Definition at line 44 of file ModuleSlotTracker.h.
using llvm::ModuleSlotTracker::MachineMDNodeListType = std::vector<std::pair<unsigned, const MDNode *> > |
Definition at line 101 of file ModuleSlotTracker.h.
ModuleSlotTracker::ModuleSlotTracker | ( | SlotTracker & | Machine, |
const Module * | M, | ||
const Function * | F = nullptr |
||
) |
Wrap a preinitialized SlotTracker.
Definition at line 878 of file AsmWriter.cpp.
|
explicit |
Construct a slot tracker from a module.
If M is nullptr
, uses a null slot tracker. Otherwise, initializes a slot tracker, and initializes all metadata slots. ShouldInitializeAllMetadata
defaults to true because this is expected to be shared between multiple callers, and otherwise MDNode references will not match up.
Definition at line 882 of file AsmWriter.cpp.
|
virtualdefault |
Destructor to clean up storage.
void ModuleSlotTracker::collectMDNodes | ( | MachineMDNodeListType & | L, |
unsigned | LB, | ||
unsigned | UB | ||
) | const |
Definition at line 5290 of file AsmWriter.cpp.
References I, and llvm::make_range().
Referenced by llvm::MachineModuleSlotTracker::collectMachineMDNodes().
Definition at line 81 of file ModuleSlotTracker.h.
References F.
Referenced by printIRBlockReference(), and llvm::MIRFormatter::printIRValue().
Return the slot number of the specified local value.
A function that defines this value should be incorporated prior to calling this method. Return -1 if the value is not in the function's SlotTracker.
Definition at line 918 of file AsmWriter.cpp.
References assert(), and llvm::SlotTracker::getLocalSlot().
Referenced by llvm::dumpBasicBlockLabel(), initSlots2BasicBlocks(), mapValueToSlot(), printIRBlockReference(), llvm::MIRFormatter::printIRValue(), and llvm::MachineBasicBlock::printName().
SlotTracker * ModuleSlotTracker::getMachine | ( | ) |
Lazily creates a slot tracker.
Definition at line 889 of file AsmWriter.cpp.
References llvm::SlotTracker::setProcessHook().
Referenced by incorporateFunction(), llvm::Value::print(), llvm::DbgLabelRecord::print(), llvm::DbgVariableRecord::print(), llvm::DbgMarker::print(), llvm::NamedMDNode::print(), llvm::Value::printAsOperand(), printAsOperandImpl(), and printMetadataImpl().
Definition at line 80 of file ModuleSlotTracker.h.
Referenced by llvm::Value::printAsOperand(), and printAsOperandImpl().
Incorporate the given function.
Purge the currently incorporated function and incorporate F
. If F
is currently incorporated, this is a no-op.
Definition at line 904 of file AsmWriter.cpp.
References F, getMachine(), llvm::SlotTracker::incorporateFunction(), and llvm::SlotTracker::purgeFunction().
Referenced by llvm::SuspendCrossingInfo::dump(), initSlots2BasicBlocks(), initSlots2Values(), llvm::MIRPrinter::print(), llvm::Value::print(), llvm::MachineInstr::print(), llvm::MachineFunction::print(), llvm::MachineBasicBlock::print(), llvm::DbgLabelRecord::print(), llvm::DbgVariableRecord::print(), llvm::DbgMarker::print(), printIRBlockReference(), printMemOperand(), and llvm::MachineBasicBlock::printName().
void ModuleSlotTracker::setProcessHook | ( | std::function< void(AbstractSlotTrackerStorage *, const Function *, bool)> | Fn | ) |
Definition at line 929 of file AsmWriter.cpp.
void ModuleSlotTracker::setProcessHook | ( | std::function< void(AbstractSlotTrackerStorage *, const Module *, bool)> | Fn | ) |
Definition at line 923 of file AsmWriter.cpp.
Referenced by llvm::MachineModuleSlotTracker::MachineModuleSlotTracker().