30#ifndef LLVM_CODEGEN_MACHINEMODULEINFO_H
31#define LLVM_CODEGEN_MACHINEMODULEINFO_H
60 using SymbolListTy = std::vector<std::pair<MCSymbol *, StubValueTy>>;
96 const Module *TheModule =
nullptr;
106 unsigned NextFnNum = 0;
107 const Function *LastRequest =
nullptr;
128 return ExternalContext ? *ExternalContext :
Context;
131 return ExternalContext ? *ExternalContext :
Context;
154 std::unique_ptr<MachineFunction> &&MF);
158 template<
typename Ty>
160 if (ObjFileMMI ==
nullptr)
161 ObjFileMMI =
new Ty(*
this);
162 return *
static_cast<Ty*
>(ObjFileMMI);
165 template<
typename Ty>
184 bool doInitialization(
Module &)
override;
185 bool doFinalization(
Module &)
override;
This file defines the DenseMap class.
This header defines various interfaces for pass management in LLVM.
Machine Check Debug Module
This file defines the PointerIntPair class.
API to communicate dependencies between analyses during invalidation.
A container for analyses that lazily runs them and caches their results.
ImmutablePass class - This class is used to provide information that does not need to be run.
Context object for machine code objects.
bool invalidate(Module &, const PreservedAnalyses &, ModuleAnalysisManager::Invalidator &)
MachineModuleInfo & getMMI()
An analysis that produces MachineModuleInfo for a module.
LLVM_ABI Result run(Module &M, ModuleAnalysisManager &)
Run the analysis pass and produce machine module information.
MachineModuleAnalysis(MachineModuleInfo &MMI)
This class can be derived from and used by targets to hold private target-specific information for ea...
std::vector< std::pair< MCSymbol *, StubValueTy > > SymbolListTy
std::vector< std::pair< MCSymbol *, const MCExpr * > > ExprStubListTy
A variant of SymbolListTy where the stub is a generalized MCExpr.
virtual ~MachineModuleInfoImpl()
const MachineModuleInfo & getMMI() const
MachineModuleInfo & getMMI()
This class contains meta information specific to a module.
LLVM_ABI void initialize()
LLVM_ABI void insertFunction(const Function &F, std::unique_ptr< MachineFunction > &&MF)
Add an externally created MachineFunction MF for F.
const Ty & getObjFileInfo() const
const MCContext & getContext() const
const Module * getModule() const
LLVM_ABI MachineFunction & getOrCreateMachineFunction(Function &F)
Returns the MachineFunction constructed for the IR function F.
LLVM_ABI ~MachineModuleInfo()
Ty & getObjFileInfo()
Keep track of various per-module pieces of information for backends that would like to do so.
const TargetMachine & getTarget() const
LLVM_ABI MachineFunction * getMachineFunction(const Function &F) const
Returns the MachineFunction associated to IR function F if there is one, otherwise nullptr.
LLVM_ABI void deleteMachineFunctionFor(Function &F)
Delete the MachineFunction MF and reset the link in the IR Function to Machine Function map.
A Module instance is used to store all the information related to an LLVM module.
PointerIntPair - This class implements a pair of a pointer and small integer.
A set of analyses that are preserved following a run of a transformation pass.
Primary interface to the complete machine description for the target machine.
This is an optimization pass for GlobalISel generic memory operations.
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...