|
LLVM 24.0.0git
|
Manage lifetime of a slot tracker for printing IR. More...
#include "llvm/IR/ModuleSlotTracker.h"
Public Types | |
| using | MachineMDNodeListType |
Public Member Functions | |
| ModuleSlotTracker (SlotTracker &Machine, const Module *M, const Function *F=nullptr) | |
| Wrap a preinitialized SlotTracker. | |
| ModuleSlotTracker (const Module *M) | |
| 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 *)>) |
| void | setProcessHook (std::function< void(AbstractSlotTrackerStorage *, const Function *)>) |
| void | collectMDNodes (MachineMDNodeListType &L) const |
| virtual bool | shouldPrintDebugLocationInline (const DILocation *) const |
| Return whether a debug location should be printed inline instead of by ID. | |
Protected Member Functions | |
| void | renumberMetadataForAssembly (ArrayRef< const MDNode * > AdditionalMetadata, MachineMDNodeListType *AdditionalMetadataNodes=nullptr) const |
| Renumber module metadata and then additional metadata for canonical assembly output. | |
| void | collectAdditionalMetadata (ArrayRef< const MDNode * > AdditionalMetadata, MachineMDNodeListType &AdditionalMetadataNodes) const |
Collect metadata reachable from AdditionalMetadata but not from the module. | |
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 45 of file ModuleSlotTracker.h.
Definition at line 47 of file ModuleSlotTracker.h.
| ModuleSlotTracker::ModuleSlotTracker | ( | SlotTracker & | Machine, |
| const Module * | M, | ||
| const Function * | F = nullptr ) |
Wrap a preinitialized SlotTracker.
Definition at line 946 of file AsmWriter.cpp.
Referenced by llvm::MachineModuleSlotTracker::MachineModuleSlotTracker().
Construct a slot tracker from a module.
If M is nullptr, uses a null slot tracker.
Definition at line 950 of file AsmWriter.cpp.
|
virtualdefault |
Destructor to clean up storage.
References getMachine().
|
protected |
Collect metadata reachable from AdditionalMetadata but not from the module.
Definition at line 1330 of file AsmWriter.cpp.
References assert(), llvm::SmallVectorImpl< T >::emplace_back(), N, and llvm::sort().
Referenced by llvm::MachineModuleSlotTracker::MachineModuleSlotTracker().
| void ModuleSlotTracker::collectMDNodes | ( | MachineMDNodeListType & | L | ) | const |
Definition at line 5561 of file AsmWriter.cpp.
References I, and llvm::make_range().
Definition at line 94 of file ModuleSlotTracker.h.
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 983 of file AsmWriter.cpp.
References assert().
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 955 of file AsmWriter.cpp.
Referenced by incorporateFunction(), llvm::DbgLabelRecord::print(), llvm::DbgMarker::print(), llvm::DbgVariableRecord::print(), llvm::NamedMDNode::print(), llvm::Value::print(), llvm::Value::printAsOperand(), printAsOperandImpl(), printMetadataImpl(), and ~ModuleSlotTracker().
Definition at line 93 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 969 of file AsmWriter.cpp.
References getMachine().
Referenced by llvm::SuspendCrossingInfo::dump(), initSlots2BasicBlocks(), initSlots2Values(), llvm::DbgLabelRecord::print(), llvm::DbgMarker::print(), llvm::DbgVariableRecord::print(), llvm::MachineBasicBlock::print(), llvm::MachineFunction::print(), llvm::MachineInstr::print(), llvm::Value::print(), printIRBlockReference(), printMemOperand(), printMF(), and llvm::MachineBasicBlock::printName().
|
protected |
Renumber module metadata and then additional metadata for canonical assembly output.
Definition at line 1323 of file AsmWriter.cpp.
References assert().
Referenced by llvm::MachineModuleSlotTracker::renumberMetadataForAssembly().
| void ModuleSlotTracker::setProcessHook | ( | std::function< void(AbstractSlotTrackerStorage *, const Function *)> | Fn | ) |
Definition at line 993 of file AsmWriter.cpp.
| void ModuleSlotTracker::setProcessHook | ( | std::function< void(AbstractSlotTrackerStorage *, const Module *)> | Fn | ) |
Definition at line 988 of file AsmWriter.cpp.
Referenced by collectAdditionalMetadata().
|
inlinevirtual |
Return whether a debug location should be printed inline instead of by ID.
Reimplemented in llvm::MachineModuleSlotTracker.
Definition at line 117 of file ModuleSlotTracker.h.
Referenced by writeAsOperandInternal().