15void MachineModuleSlotTracker::processMachineFunctionMetadata(
33void MachineModuleSlotTracker::processMachineModule(
35 bool ShouldInitializeAllMetadata) {
36 if (ShouldInitializeAllMetadata) {
38 if (&F != &TheFunction)
42 processMachineFunctionMetadata(AST, *MF);
49void MachineModuleSlotTracker::processMachineFunction(
51 bool ShouldInitializeAllMetadata) {
52 if (!ShouldInitializeAllMetadata && F == &TheFunction) {
55 processMachineFunctionMetadata(AST, *MF);
68 ShouldInitializeAllMetadata),
69 TheFunction(MF->
getFunction()), TheMMI(MF->getMMI()) {
71 bool ShouldInitializeAllMetadata) {
72 this->processMachineModule(AST, M, ShouldInitializeAllMetadata);
75 bool ShouldInitializeAllMetadata) {
76 this->processMachineFunction(AST,
F, ShouldInitializeAllMetadata);
static const Function * getParent(const Value *V)
static Function * getFunction(Constant *C)
Abstract interface of slot tracker storage.
virtual unsigned getNextMetadataSlot()=0
virtual void createMetadataSlot(const MDNode *)=0
Representation of each machine instruction.
A description of a memory reference used in the backend.
MachineFunction * getMachineFunction(const Function &F) const
Returns the MachineFunction associated to IR function F if there is one, otherwise nullptr.
MachineModuleSlotTracker(const MachineFunction *MF, bool ShouldInitializeAllMetadata=true)
~MachineModuleSlotTracker()
void collectMachineMDNodes(MachineMDNodeListType &L) const
Manage lifetime of a slot tracker for printing IR.
std::vector< std::pair< unsigned, const MDNode * > > MachineMDNodeListType
void collectMDNodes(MachineMDNodeListType &L, unsigned LB, unsigned UB) const
void setProcessHook(std::function< void(AbstractSlotTrackerStorage *, const Module *, bool)>)
A Module instance is used to store all the information related to an LLVM module.
This is an optimization pass for GlobalISel generic memory operations.
A collection of metadata nodes that might be associated with a memory access used by the alias-analys...
MDNode * TBAAStruct
The tag for type-based alias analysis (tbaa struct).
MDNode * Scope
The tag for alias scope specification (used with noalias).
MDNode * TBAA
The tag for type-based alias analysis.
MDNode * NoAlias
The tag specifying the noalias scope.