9#ifndef LLVM_IR_MODULESLOTTRACKER_H
10#define LLVM_IR_MODULESLOTTRACKER_H
52 std::unique_ptr<SlotTracker> MachineStorage;
53 bool ShouldCreateStorage =
false;
62 ProcessFunctionHookFn;
100 void incorporateFunction(
const Function &
F);
107 int getLocalSlot(
const Value *V);
114 void collectMDNodes(MachineMDNodeListType &L)
const;
static SmallVector< const MDNode * > collectAdditionalMetadata(Module &M, const DXILDebugInfoMap &DI)
This file defines the SmallVector class.
Abstract interface of slot tracker storage.
virtual int getMetadataSlot(const MDNode *)=0
virtual ~AbstractSlotTrackerStorage()
virtual void createMetadataSlot(const MDNode *)=0
Represent a constant reference to an array (0 or more elements consecutively in memory),...
const Module * getModule() const
ModuleSlotTracker(SlotTracker &Machine, const Module *M, const Function *F=nullptr)
Wrap a preinitialized SlotTracker.
void renumberMetadataForAssembly(ArrayRef< const MDNode * > AdditionalMetadata, MachineMDNodeListType *AdditionalMetadataNodes=nullptr) const
Renumber module metadata and then additional metadata for canonical assembly output.
virtual ~ModuleSlotTracker()
Destructor to clean up storage.
virtual bool shouldPrintDebugLocationInline(const DILocation *) const
Return whether a debug location should be printed inline instead of by ID.
SlotTracker * getMachine()
Lazily creates a slot tracker.
const Function * getCurrentFunction() const
SmallVector< std::pair< unsigned, const MDNode * >, 0 > MachineMDNodeListType
A Module instance is used to store all the information related to an LLVM module.
This class provides computation of slot numbers for LLVM Assembly writing.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
LLVM Value Representation.
This is an optimization pass for GlobalISel generic memory operations.