class AsmPrinter
Declaration
class AsmPrinter : public MachineFunctionPass { /* full declaration omitted */ };
Description
This class is intended to be used as a driving class for all asm writers.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:80
Inherits from: MachineFunctionPass
Member Variables
- public llvm::TargetMachine& TM
- Target machine description.
- public const llvm::MCAsmInfo* MAI
- Target Asm Printer information.
- public llvm::MCContext& OutContext
- This is the context for the output file that we are streaming. This owns all of the global MC-related objects for the generated translation unit.
- public std::unique_ptr<MCStreamer> OutStreamer
- This is the MCStreamer object for the file we are generating. This contains the transient state for the current translation unit that we are generating (such as the current section etc).
- public llvm::MachineFunction* MF = nullptr
- The current machine function.
- public llvm::MachineModuleInfo* MMI = nullptr
- This is a pointer to the current MachineModuleInfo.
- public llvm::MachineDominatorTree* MDT = nullptr
- This is a pointer to the current MachineLoopInfo.
- public llvm::MachineLoopInfo* MLI = nullptr
- This is a pointer to the current MachineLoopInfo.
- public llvm::MachineOptimizationRemarkEmitter* ORE
- Optimization remark emitter.
- public llvm::MachineBlockFrequencyInfo* MBFI
- public llvm::ProfileSummaryInfo* PSI
- public llvm::MCSymbol* CurrentPatchableFunctionEntrySym = nullptr
- The symbol for the entry in __patchable_function_entires.
- public llvm::MCSymbol* CurrentFnSym = nullptr
- The symbol for the current function. This is recalculated at the beginning of each call to runOnMachineFunction().
- public llvm::MCSymbol* CurrentFnDescSym = nullptr
- The symbol for the current function descriptor on AIX. This is created at the beginning of each call to SetupMachineFunction().
- public llvm::MCSymbol* CurrentFnSymForSize = nullptr
- The symbol used to represent the start of the current function for the purpose of calculating its size (e.g. using the .size directive). By default, this is equal to CurrentFnSym.
- public MapVector<const llvm::MCSymbol*, llvm::AsmPrinter::GOTEquivUsePair> GlobalGOTEquivs
- protected llvm::MCSymbol* CurrentFnBegin = nullptr
- protected SmallVector<llvm::AsmPrinter::HandlerInfo, 1> Handlers
- A vector of all debug/EH info emitters we should use. This vector maintains ownership of the emitters.
- public SmallVector<llvm::AsmPrinter::XRayFunctionEntry, 4> Sleds
- public unsigned int XRayFnUniqueID = 0
- public DenseMap<const llvm::MCSection*, unsigned int> PatchableFunctionEntryID
Method Overview
- protected AsmPrinter(llvm::TargetMachine & TM, std::unique_ptr<MCStreamer> Streamer)
- public void EmitAlignment(llvm::Align Alignment, const llvm::GlobalObject * GV = nullptr) const
- public virtual void EmitBasicBlockEnd(const llvm::MachineBasicBlock & MBB)
- public virtual void EmitBasicBlockStart(const llvm::MachineBasicBlock & MBB)
- public void EmitCallSiteOffset(const llvm::MCSymbol * Hi, const llvm::MCSymbol * Lo, unsigned int Encoding) const
- public void EmitCallSiteValue(uint64_t Value, unsigned int Encoding) const
- public virtual void EmitConstantPool()
- public virtual void EmitDebugValue(const llvm::MCExpr * Value, unsigned int Size) const
- public void EmitDwarfOffset(const llvm::MCSymbol * Label, uint64_t Offset) const
- public void EmitEncodingByte(unsigned int Val, const char * Desc = nullptr) const
- public virtual void EmitEndOfAsmFile(llvm::Module &)
- public void EmitFunctionBody()
- public virtual void EmitFunctionBodyEnd()
- public virtual void EmitFunctionBodyStart()
- public virtual void EmitFunctionDescriptor()
- public virtual void EmitFunctionEntryLabel()
- public void EmitGlobalConstant(const llvm::DataLayout & DL, const llvm::Constant * CV)
- public virtual void EmitGlobalVariable(const llvm::GlobalVariable * GV)
- public virtual void EmitInstruction(const llvm::MachineInstr *)
- public virtual void EmitJumpTableInfo()
- public void EmitLabelDifference(const llvm::MCSymbol * Hi, const llvm::MCSymbol * Lo, unsigned int Size) const
- public void EmitLabelDifferenceAsULEB128(const llvm::MCSymbol * Hi, const llvm::MCSymbol * Lo) const
- public void EmitLabelPlusOffset(const llvm::MCSymbol * Label, uint64_t Offset, unsigned int Size, bool IsSectionRelative = false) const
- public void EmitLabelReference(const llvm::MCSymbol * Label, unsigned int Size, bool IsSectionRelative = false) const
- public void EmitLinkage(const llvm::GlobalValue * GV, llvm::MCSymbol * GVSym) const
- public virtual void EmitMachineConstantPoolValue(llvm::MachineConstantPoolValue * MCPV)
- public void EmitSLEB128(int64_t Value, const char * Desc = nullptr) const
- public bool EmitSpecialLLVMGlobal(const llvm::GlobalVariable * GV)
- public virtual void EmitStartOfAsmFile(llvm::Module &)
- public void EmitTTypeReference(const llvm::GlobalValue * GV, unsigned int Encoding) const
- public void EmitToStreamer(llvm::MCStreamer & S, const llvm::MCInst & Inst)
- public void EmitULEB128(uint64_t Value, const char * Desc = nullptr, unsigned int PadTo = 0) const
- public void EmitVisibility(llvm::MCSymbol * Sym, unsigned int Visibility, bool IsDefinition = true) const
- public virtual void EmitXXStructor(const llvm::DataLayout & DL, const llvm::Constant * CV)
- public llvm::MCSymbol * GetBlockAddressSymbol(const llvm::BlockAddress * BA) const
- public llvm::MCSymbol * GetBlockAddressSymbol(const llvm::BasicBlock * BB) const
- public virtual llvm::MCSymbol * GetCPISymbol(unsigned int CPID) const
- public llvm::MCSymbol * GetExternalSymbolSymbol(llvm::StringRef Sym) const
- public llvm::MCSymbol * GetJTISymbol(unsigned int JTID, bool isLinkerPrivate = false) const
- public llvm::MCSymbol * GetJTSetSymbol(unsigned int UID, unsigned int MBBID) const
- public unsigned int GetSizeOfEncodedValue(unsigned int Encoding) const
- public virtual bool PrintAsmMemoryOperand(const llvm::MachineInstr * MI, unsigned int OpNo, const char * ExtraCode, llvm::raw_ostream & OS)
- public virtual bool PrintAsmOperand(const llvm::MachineInstr * MI, unsigned int OpNo, const char * ExtraCode, llvm::raw_ostream & OS)
- public virtual void PrintSpecial(const llvm::MachineInstr * MI, llvm::raw_ostream & OS, const char * Code) const
- public virtual void PrintSymbolOperand(const llvm::MachineOperand & MO, llvm::raw_ostream & OS)
- public virtual void SetupMachineFunction(llvm::MachineFunction & MF)
- public void computeGlobalGOTEquivs(llvm::Module & M)
- public llvm::MCSymbol * createTempSymbol(const llvm::Twine & Name) const
- public bool doFinalization(llvm::Module & M)
- public bool doInitialization(llvm::Module & M)
- public void emitCFIInstruction(const llvm::MachineInstr & MI)
- public void emitCFIInstruction(const llvm::MCCFIInstruction & Inst) const
- public void emitDwarfAbbrev(const llvm::DIEAbbrev & Abbrev) const
- public template <typename T>void emitDwarfAbbrevs(const T & Abbrevs) const
- public void emitDwarfDIE(const llvm::DIE & Die) const
- public void emitDwarfStringOffset(llvm::DwarfStringPoolEntryRef S) const
- public void emitDwarfStringOffset(llvm::DwarfStringPoolEntry S) const
- public void emitDwarfSymbolReference(const llvm::MCSymbol * Label, bool ForceOffset = false) const
- public void emitFrameAlloc(const llvm::MachineInstr & MI)
- public void emitGlobalGOTEquivs()
- public virtual void emitImplicitDef(const llvm::MachineInstr * MI) const
- public void emitInitialRawDwarfLocDirective(const llvm::MachineFunction & MF)
- public virtual void emitInlineAsmEnd(const llvm::MCSubtargetInfo & StartInfo, const llvm::MCSubtargetInfo * EndInfo) const
- public virtual void emitInlineAsmStart() const
- public void emitInt16(int Value) const
- public void emitInt32(int Value) const
- public void emitInt64(uint64_t Value) const
- public void emitInt8(int Value) const
- public void emitNops(unsigned int N)
- public void emitPatchableFunctionEntries()
- public void emitRemarksSection(llvm::RemarkStreamer & RS)
- public void emitStackMaps(llvm::StackMaps & SM)
- public void emitStackSizeSection(const llvm::MachineFunction & MF)
- public void emitXRayTable()
- public void getAnalysisUsage(llvm::AnalysisUsage & AU) const
- public llvm::MCSymbol * getCurExceptionSym()
- public const llvm::MCSection * getCurrentSection() const
- public const llvm::DataLayout & getDataLayout() const
- public llvm::DwarfDebug * getDwarfDebug()
- public llvm::DwarfDebug * getDwarfDebug() const
- public uint16_t getDwarfVersion() const
- public llvm::MCSymbol * getFunctionBegin() const
- public llvm::MCSymbol * getFunctionEnd() const
- public virtual const llvm::MCSymbol * getFunctionFrameSymbol() const
- public unsigned int getFunctionNumber() const
- public static llvm::Align getGVAlignment(const llvm::GlobalValue * GV, const llvm::DataLayout & DL, llvm::Align InAlign = Align::None())
- public virtual unsigned int getISAEncoding()
- public void getNameWithPrefix(SmallVectorImpl<char> & Name, const llvm::GlobalValue * GV) const
- public const llvm::TargetLoweringObjectFile & getObjFileLowering() const
- public unsigned int getPointerSize() const
- public const llvm::MCSubtargetInfo & getSubtargetInfo() const
- public llvm::MCSymbol * getSymbol(const llvm::GlobalValue * GV) const
- public llvm::MCSymbol * getSymbolWithGlobalValueBase(const llvm::GlobalValue * GV, llvm::StringRef Suffix) const
- public virtual bool isBlockOnlyReachableByFallthrough(const llvm::MachineBasicBlock * MBB) const
- public bool isPositionIndependent() const
- public bool isVerbose() const
- public virtual const llvm::MCExpr * lowerConstant(const llvm::Constant * CV)
- public llvm::AsmPrinter::CFIMoveType needsCFIMoves() const
- public bool needsOnlyDebugCFIMoves() const
- public bool needsSEHMoves()
- public void printOffset(int64_t Offset, llvm::raw_ostream & OS) const
- public void recordSled(llvm::MCSymbol * Sled, const llvm::MachineInstr & MI, llvm::AsmPrinter::SledKind Kind, uint8_t Version = 0)
- public bool runOnMachineFunction(llvm::MachineFunction & MF)
- public void setDwarfVersion(uint16_t Version)
- public ~AsmPrinter()
Inherited from MachineFunctionPass:
- public doInitialization
- protected getAnalysisUsage
- protected getClearedProperties
- protected getRequiredProperties
- protected getSetProperties
- protected runOnMachineFunction
Inherited from FunctionPass:
- public assignPassManager
- public createPrinterPass
- public getPotentialPassManagerType
- public runOnFunction
- protected skipFunction
Inherited from Pass:
- public assignPassManager
- public createPass
- public createPrinterPass
- public doFinalization
- public doInitialization
- public dump
- public dumpPassStructure
- public getAdjustedAnalysisPointer
- public getAnalysis
- public getAnalysis
- public getAnalysisID
- public getAnalysisID
- public getAnalysisIfAvailable
- public getAnalysisUsage
- public getAsImmutablePass
- public getAsPMDataManager
- public getPassID
- public getPassKind
- public getPassName
- public getPotentialPassManagerType
- public getResolver
- public lookupPassInfo
- public lookupPassInfo
- public mustPreserveAnalysisID
- public preparePassManager
- public print
- public releaseMemory
- public setResolver
- public verifyAnalysis
Methods
¶AsmPrinter(llvm::TargetMachine& TM,
std::unique_ptr<MCStreamer> Streamer)
AsmPrinter(llvm::TargetMachine& TM,
std::unique_ptr<MCStreamer> Streamer)
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:199
Parameters
- llvm::TargetMachine& TM
- std::unique_ptr<MCStreamer> Streamer
¶void EmitAlignment(
llvm::Align Alignment,
const llvm::GlobalObject* GV = nullptr) const
void EmitAlignment(
llvm::Align Alignment,
const llvm::GlobalObject* GV = nullptr) const
Description
Emit an alignment directive to the specified power of two boundary. If a global value is specified, and if that global has an explicit alignment requested, it will override the alignment request if required for correctness.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:366
Parameters
- llvm::Align Alignment
- const llvm::GlobalObject* GV = nullptr
¶virtual void EmitBasicBlockEnd(
const llvm::MachineBasicBlock& MBB)
virtual void EmitBasicBlockEnd(
const llvm::MachineBasicBlock& MBB)
Description
Targets can override this to emit stuff at the end of a basic block.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:422
Parameters
- const llvm::MachineBasicBlock& MBB
¶virtual void EmitBasicBlockStart(
const llvm::MachineBasicBlock& MBB)
virtual void EmitBasicBlockStart(
const llvm::MachineBasicBlock& MBB)
Description
Targets can override this to emit stuff at the start of a basic block. By default, this method prints the label for the specified MachineBasicBlock, an alignment (if present) and a comment describing it if appropriate.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:419
Parameters
- const llvm::MachineBasicBlock& MBB
¶void EmitCallSiteOffset(
const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo,
unsigned int Encoding) const
void EmitCallSiteOffset(
const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo,
unsigned int Encoding) const
Description
Emit reference to a call site with a specified encoding
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:570
Parameters
- const llvm::MCSymbol* Hi
- const llvm::MCSymbol* Lo
- unsigned int Encoding
¶void EmitCallSiteValue(
uint64_t Value,
unsigned int Encoding) const
void EmitCallSiteValue(
uint64_t Value,
unsigned int Encoding) const
Description
Emit an integer value corresponding to the call site encoding
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:573
Parameters
- uint64_t Value
- unsigned int Encoding
¶virtual void EmitConstantPool()
virtual void EmitConstantPool()
Description
Print to the current output stream assembly representations of the constants in the constant pool MCP. This is used to print out constants which have been "spilled to memory" by the code generator.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:349
¶virtual void EmitDebugValue(
const llvm::MCExpr* Value,
unsigned int Size) const
virtual void EmitDebugValue(
const llvm::MCExpr* Value,
unsigned int Size) const
Description
Emit the directive and value for debug thread local expression \p Value - The value to emit.\p Size - The size of the integer (in bytes) to emit.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:582
Parameters
- const llvm::MCExpr* Value
- unsigned int Size
¶void EmitDwarfOffset(const llvm::MCSymbol* Label,
uint64_t Offset) const
void EmitDwarfOffset(const llvm::MCSymbol* Label,
uint64_t Offset) const
Description
Emit something like ".long Label + Offset".
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:528
Parameters
- const llvm::MCSymbol* Label
- uint64_t Offset
¶void EmitEncodingByte(
unsigned int Val,
const char* Desc = nullptr) const
void EmitEncodingByte(
unsigned int Val,
const char* Desc = nullptr) const
Description
Emit a .byte 42 directive that corresponds to an encoding. If verbose assembly output is enabled, we output comments describing the encoding. Desc is a string saying what the encoding is specifying (e.g. "LSDA").
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:543
Parameters
- unsigned int Val
- const char* Desc = nullptr
¶virtual void EmitEndOfAsmFile(llvm::Module&)
virtual void EmitEndOfAsmFile(llvm::Module&)
Description
This virtual method can be overridden by targets that want to emit something at the end of their file.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:405
Parameters
¶void EmitFunctionBody()
void EmitFunctionBody()
Description
This method emits the body and trailer for a function.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:327
¶virtual void EmitFunctionBodyEnd()
virtual void EmitFunctionBodyEnd()
Description
Targets can override this to emit stuff after the last basic block in the function.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:413
¶virtual void EmitFunctionBodyStart()
virtual void EmitFunctionBodyStart()
Description
Targets can override this to emit stuff before the first basic block in the function.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:409
¶virtual void EmitFunctionDescriptor()
virtual void EmitFunctionDescriptor()
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:434
¶virtual void EmitFunctionEntryLabel()
virtual void EmitFunctionEntryLabel()
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:432
¶void EmitGlobalConstant(
const llvm::DataLayout& DL,
const llvm::Constant* CV)
void EmitGlobalConstant(
const llvm::DataLayout& DL,
const llvm::Constant* CV)
Description
Print a general LLVM constant to the .s file.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:372
Parameters
- const llvm::DataLayout& DL
- const llvm::Constant* CV
¶virtual void EmitGlobalVariable(
const llvm::GlobalVariable* GV)
virtual void EmitGlobalVariable(
const llvm::GlobalVariable* GV)
Description
Emit the specified global variable to the .s file.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:356
Parameters
- const llvm::GlobalVariable* GV
¶virtual void EmitInstruction(
const llvm::MachineInstr*)
virtual void EmitInstruction(
const llvm::MachineInstr*)
Description
Targets should implement this to emit instructions.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:425
Parameters
- const llvm::MachineInstr*
¶virtual void EmitJumpTableInfo()
virtual void EmitJumpTableInfo()
Description
Print assembly representations of the jump tables used by the current function to the current output stream.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:353
¶void EmitLabelDifference(const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo,
unsigned int Size) const
void EmitLabelDifference(const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo,
unsigned int Size) const
Description
Emit something like ".long Hi-Lo" where the size in bytes of the directive is specified by Size and Hi/Lo specify the labels. This implicitly uses .set if it is available.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:507
Parameters
- const llvm::MCSymbol* Hi
- const llvm::MCSymbol* Lo
- unsigned int Size
¶void EmitLabelDifferenceAsULEB128(
const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo) const
void EmitLabelDifferenceAsULEB128(
const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo) const
Description
Emit something like ".uleb128 Hi-Lo".
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:511
Parameters
- const llvm::MCSymbol* Hi
- const llvm::MCSymbol* Lo
¶void EmitLabelPlusOffset(
const llvm::MCSymbol* Label,
uint64_t Offset,
unsigned int Size,
bool IsSectionRelative = false) const
void EmitLabelPlusOffset(
const llvm::MCSymbol* Label,
uint64_t Offset,
unsigned int Size,
bool IsSectionRelative = false) const
Description
Emit something like ".long Label+Offset" where the size in bytes of the directive is specified by Size and Label specifies the label. This implicitly uses .set if it is available.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:517
Parameters
- const llvm::MCSymbol* Label
- uint64_t Offset
- unsigned int Size
- bool IsSectionRelative = false
¶void EmitLabelReference(
const llvm::MCSymbol* Label,
unsigned int Size,
bool IsSectionRelative = false) const
void EmitLabelReference(
const llvm::MCSymbol* Label,
unsigned int Size,
bool IsSectionRelative = false) const
Description
Emit something like ".long Label" where the size in bytes of the directive is specified by Size and Label specifies the label.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:522
Parameters
- const llvm::MCSymbol* Label
- unsigned int Size
- bool IsSectionRelative = false
¶void EmitLinkage(const llvm::GlobalValue* GV,
llvm::MCSymbol* GVSym) const
void EmitLinkage(const llvm::GlobalValue* GV,
llvm::MCSymbol* GVSym) const
Description
This emits linkage information about \p GVSym based on \p GV, if this is supported by the target.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:659
Parameters
- const llvm::GlobalValue* GV
- llvm::MCSymbol* GVSym
¶virtual void EmitMachineConstantPoolValue(
llvm::MachineConstantPoolValue* MCPV)
virtual void EmitMachineConstantPoolValue(
llvm::MachineConstantPoolValue* MCPV)
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:438
Parameters
¶void EmitSLEB128(int64_t Value,
const char* Desc = nullptr) const
void EmitSLEB128(int64_t Value,
const char* Desc = nullptr) const
Description
Emit the specified signed leb128 value.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:535
Parameters
- int64_t Value
- const char* Desc = nullptr
¶bool EmitSpecialLLVMGlobal(
const llvm::GlobalVariable* GV)
bool EmitSpecialLLVMGlobal(
const llvm::GlobalVariable* GV)
Description
Check to see if the specified global is a special global used by LLVM. If so, emit it and return true, otherwise do nothing and return false.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:360
Parameters
- const llvm::GlobalVariable* GV
¶virtual void EmitStartOfAsmFile(llvm::Module&)
virtual void EmitStartOfAsmFile(llvm::Module&)
Description
This virtual method can be overridden by targets that want to emit something at the start of their file.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:401
Parameters
¶void EmitTTypeReference(
const llvm::GlobalValue* GV,
unsigned int Encoding) const
void EmitTTypeReference(
const llvm::GlobalValue* GV,
unsigned int Encoding) const
Description
Emit reference to a ttype global with a specified encoding.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:549
Parameters
- const llvm::GlobalValue* GV
- unsigned int Encoding
¶void EmitToStreamer(llvm::MCStreamer& S,
const llvm::MCInst& Inst)
void EmitToStreamer(llvm::MCStreamer& S,
const llvm::MCInst& Inst)
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:238
Parameters
- llvm::MCStreamer& S
- const llvm::MCInst& Inst
¶void EmitULEB128(uint64_t Value,
const char* Desc = nullptr,
unsigned int PadTo = 0) const
void EmitULEB128(uint64_t Value,
const char* Desc = nullptr,
unsigned int PadTo = 0) const
Description
Emit the specified unsigned leb128 value.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:538
Parameters
- uint64_t Value
- const char* Desc = nullptr
- unsigned int PadTo = 0
¶void EmitVisibility(
llvm::MCSymbol* Sym,
unsigned int Visibility,
bool IsDefinition = true) const
void EmitVisibility(
llvm::MCSymbol* Sym,
unsigned int Visibility,
bool IsDefinition = true) const
Description
This emits visibility information about symbol, if this is supported by the target.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:654
Parameters
- llvm::MCSymbol* Sym
- unsigned int Visibility
- bool IsDefinition = true
¶virtual void EmitXXStructor(
const llvm::DataLayout& DL,
const llvm::Constant* CV)
virtual void EmitXXStructor(
const llvm::DataLayout& DL,
const llvm::Constant* CV)
Description
Targets can override this to change how global constants that are part of a C++ static/global constructor list are emitted.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:442
Parameters
- const llvm::DataLayout& DL
- const llvm::Constant* CV
¶llvm::MCSymbol* GetBlockAddressSymbol(
const llvm::BlockAddress* BA) const
llvm::MCSymbol* GetBlockAddressSymbol(
const llvm::BlockAddress* BA) const
Description
Return the MCSymbol used to satisfy BlockAddress uses of the specified basic block.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:482
Parameters
- const llvm::BlockAddress* BA
¶llvm::MCSymbol* GetBlockAddressSymbol(
const llvm::BasicBlock* BB) const
llvm::MCSymbol* GetBlockAddressSymbol(
const llvm::BasicBlock* BB) const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:483
Parameters
- const llvm::BasicBlock* BB
¶virtual llvm::MCSymbol* GetCPISymbol(
unsigned int CPID) const
virtual llvm::MCSymbol* GetCPISymbol(
unsigned int CPID) const
Description
Return the symbol for the specified constant pool entry.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:430
Parameters
- unsigned int CPID
¶llvm::MCSymbol* GetExternalSymbolSymbol(
llvm::StringRef Sym) const
llvm::MCSymbol* GetExternalSymbolSymbol(
llvm::StringRef Sym) const
Description
Return the MCSymbol for the specified ExternalSymbol.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:471
Parameters
- llvm::StringRef Sym
¶llvm::MCSymbol* GetJTISymbol(
unsigned int JTID,
bool isLinkerPrivate = false) const
llvm::MCSymbol* GetJTISymbol(
unsigned int JTID,
bool isLinkerPrivate = false) const
Description
Return the symbol for the specified jump table entry.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:474
Parameters
- unsigned int JTID
- bool isLinkerPrivate = false
¶llvm::MCSymbol* GetJTSetSymbol(
unsigned int UID,
unsigned int MBBID) const
llvm::MCSymbol* GetJTSetSymbol(
unsigned int UID,
unsigned int MBBID) const
Description
Return the symbol for the specified jump table .set FIXME: privatize to AsmPrinter.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:478
Parameters
- unsigned int UID
- unsigned int MBBID
¶unsigned int GetSizeOfEncodedValue(
unsigned int Encoding) const
unsigned int GetSizeOfEncodedValue(
unsigned int Encoding) const
Description
Return the size of the encoding in bytes.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:546
Parameters
- unsigned int Encoding
¶virtual bool PrintAsmMemoryOperand(
const llvm::MachineInstr* MI,
unsigned int OpNo,
const char* ExtraCode,
llvm::raw_ostream& OS)
virtual bool PrintAsmMemoryOperand(
const llvm::MachineInstr* MI,
unsigned int OpNo,
const char* ExtraCode,
llvm::raw_ostream& OS)
Description
Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant as an address. Targets should override this to format as appropriate. This method can return true if the operand is erroneous.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:636
Parameters
- const llvm::MachineInstr* MI
- unsigned int OpNo
- const char* ExtraCode
- llvm::raw_ostream& OS
¶virtual bool PrintAsmOperand(
const llvm::MachineInstr* MI,
unsigned int OpNo,
const char* ExtraCode,
llvm::raw_ostream& OS)
virtual bool PrintAsmOperand(
const llvm::MachineInstr* MI,
unsigned int OpNo,
const char* ExtraCode,
llvm::raw_ostream& OS)
Description
Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant. Targets should override this to format as appropriate. This method can return true if the operand is erroneous.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:629
Parameters
- const llvm::MachineInstr* MI
- unsigned int OpNo
- const char* ExtraCode
- llvm::raw_ostream& OS
¶virtual void PrintSpecial(
const llvm::MachineInstr* MI,
llvm::raw_ostream& OS,
const char* Code) const
virtual void PrintSpecial(
const llvm::MachineInstr* MI,
llvm::raw_ostream& OS,
const char* Code) const
Description
Print information related to the specified machine instr that is independent of the operand, and may be independent of the instr itself. This can be useful for portably encoding the comment character or other bits of target-specific knowledge into the asmstrings. The syntax used is ${:comment}. Targets can override this to add support for their own strange codes.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:619
Parameters
- const llvm::MachineInstr* MI
- llvm::raw_ostream& OS
- const char* Code
¶virtual void PrintSymbolOperand(
const llvm::MachineOperand& MO,
llvm::raw_ostream& OS)
virtual void PrintSymbolOperand(
const llvm::MachineOperand& MO,
llvm::raw_ostream& OS)
Description
Print the MachineOperand as a symbol. Targets with complex handling of symbol references should override the base implementation.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:624
Parameters
- const llvm::MachineOperand& MO
- llvm::raw_ostream& OS
¶virtual void SetupMachineFunction(
llvm::MachineFunction& MF)
virtual void SetupMachineFunction(
llvm::MachineFunction& MF)
Description
This should be called when a new MachineFunction is being processed from runOnMachineFunction.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:324
Parameters
¶void computeGlobalGOTEquivs(llvm::Module& M)
void computeGlobalGOTEquivs(llvm::Module& M)
Description
Unnamed constant global variables solely contaning a pointer to another globals variable act like a global variable "proxy", or GOT equivalents, i.e., it's only used to hold the address of the latter. One optimization is to replace accesses to these proxies by using the GOT entry for the final global instead. Hence, we select GOT equivalent candidates among all the module global variables, avoid emitting them unnecessarily and finally replace references to them by pc relative accesses to GOT entries.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:382
Parameters
- llvm::Module& M
¶llvm::MCSymbol* createTempSymbol(
const llvm::Twine& Name) const
llvm::MCSymbol* createTempSymbol(
const llvm::Twine& Name) const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:463
Parameters
- const llvm::Twine& Name
¶bool doFinalization(llvm::Module& M)
bool doFinalization(llvm::Module& M)
Description
Shut down the asmprinter. If you override this in your pass, you must make sure to call it explicitly.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:309
Parameters
- llvm::Module& M
¶bool doInitialization(llvm::Module& M)
bool doInitialization(llvm::Module& M)
Description
Set up the AsmPrinter when we are working on a new module. If your pass overrides this, it must make sure to explicitly call this implementation.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:305
Parameters
- llvm::Module& M
¶void emitCFIInstruction(
const llvm::MachineInstr& MI)
void emitCFIInstruction(
const llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:329
Parameters
- const llvm::MachineInstr& MI
¶void emitCFIInstruction(
const llvm::MCCFIInstruction& Inst) const
void emitCFIInstruction(
const llvm::MCCFIInstruction& Inst) const
Description
Emit frame instruction to describe the layout of the frame.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:589
Parameters
- const llvm::MCCFIInstruction& Inst
¶void emitDwarfAbbrev(
const llvm::DIEAbbrev& Abbrev) const
void emitDwarfAbbrev(
const llvm::DIEAbbrev& Abbrev) const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:601
Parameters
- const llvm::DIEAbbrev& Abbrev
¶template <typename T>
void emitDwarfAbbrevs(const T& Abbrevs) const
template <typename T>
void emitDwarfAbbrevs(const T& Abbrevs) const
Description
Emit Dwarf abbreviation table.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:592
Templates
- T
Parameters
- const T& Abbrevs
¶void emitDwarfDIE(const llvm::DIE& Die) const
void emitDwarfDIE(const llvm::DIE& Die) const
Description
Recursively emit Dwarf DIE tree.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:604
Parameters
- const llvm::DIE& Die
¶void emitDwarfStringOffset(
llvm::DwarfStringPoolEntryRef S) const
void emitDwarfStringOffset(
llvm::DwarfStringPoolEntryRef S) const
Description
Emit the 4-byte offset of a string from the start of its section.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:565
Parameters
¶void emitDwarfStringOffset(
llvm::DwarfStringPoolEntry S) const
void emitDwarfStringOffset(
llvm::DwarfStringPoolEntry S) const
Description
Emit the 4-byte offset of a string from the start of its section. When possible, emit a DwarfStringPool section offset without any relocations, and without using the symbol. Otherwise, defers to \a emitDwarfSymbolReference().
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:562
Parameters
¶void emitDwarfSymbolReference(
const llvm::MCSymbol* Label,
bool ForceOffset = false) const
void emitDwarfSymbolReference(
const llvm::MCSymbol* Label,
bool ForceOffset = false) const
Description
Emit a reference to a symbol for use in dwarf. Different object formats represent this in different ways. Some use a relocation others encode the label offset in its section.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:554
Parameters
- const llvm::MCSymbol* Label
- bool ForceOffset = false
¶void emitFrameAlloc(const llvm::MachineInstr& MI)
void emitFrameAlloc(const llvm::MachineInstr& MI)
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:331
Parameters
- const llvm::MachineInstr& MI
¶void emitGlobalGOTEquivs()
void emitGlobalGOTEquivs()
Description
Constant expressions using GOT equivalent globals may not be eligible for PC relative GOT entry conversion, in such cases we need to emit the proxies we previously omitted in EmitGlobalVariable.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:387
¶virtual void emitImplicitDef(
const llvm::MachineInstr* MI) const
virtual void emitImplicitDef(
const llvm::MachineInstr* MI) const
Description
Targets can override this to customize the output of IMPLICIT_DEF instructions in verbose mode.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:454
Parameters
- const llvm::MachineInstr* MI
¶void emitInitialRawDwarfLocDirective(
const llvm::MachineFunction& MF)
void emitInitialRawDwarfLocDirective(
const llvm::MachineFunction& MF)
Description
Emits inital debug location directive.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:241
Parameters
- const llvm::MachineFunction& MF
¶virtual void emitInlineAsmEnd(
const llvm::MCSubtargetInfo& StartInfo,
const llvm::MCSubtargetInfo* EndInfo) const
virtual void emitInlineAsmEnd(
const llvm::MCSubtargetInfo& StartInfo,
const llvm::MCSubtargetInfo* EndInfo) const
Description
Let the target do anything it needs to do after emitting inlineasm. This callback can be used restore the original mode in case the inlineasm contains directives to switch modes.\p StartInfo - the original subtarget info before inline asm\p EndInfo - the final subtarget info after parsing the inline asm, or NULL if the value is unknown.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:649
Parameters
- const llvm::MCSubtargetInfo& StartInfo
- const llvm::MCSubtargetInfo* EndInfo
¶virtual void emitInlineAsmStart() const
virtual void emitInlineAsmStart() const
Description
Let the target do anything it needs to do before emitting inlineasm.\p StartInfo - the subtarget info before parsing inline asm
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:641
¶void emitInt16(int Value) const
void emitInt16(int Value) const
Description
Emit a short directive and value.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:496
Parameters
- int Value
¶void emitInt32(int Value) const
void emitInt32(int Value) const
Description
Emit a long directive and value.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:499
Parameters
- int Value
¶void emitInt64(uint64_t Value) const
void emitInt64(uint64_t Value) const
Description
Emit a long long directive and value.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:502
Parameters
- uint64_t Value
¶void emitInt8(int Value) const
void emitInt8(int Value) const
Description
Emit a byte directive and value.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:493
Parameters
- int Value
¶void emitNops(unsigned int N)
void emitNops(unsigned int N)
Description
Emit N NOP instructions.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:457
Parameters
- unsigned int N
¶void emitPatchableFunctionEntries()
void emitPatchableFunctionEntries()
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:294
¶void emitRemarksSection(llvm::RemarkStreamer& RS)
void emitRemarksSection(llvm::RemarkStreamer& RS)
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:335
Parameters
¶void emitStackMaps(llvm::StackMaps& SM)
void emitStackMaps(llvm::StackMaps& SM)
Description
Emit the stack maps.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:390
Parameters
- llvm::StackMaps& SM
¶void emitStackSizeSection(
const llvm::MachineFunction& MF)
void emitStackSizeSection(
const llvm::MachineFunction& MF)
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:333
Parameters
- const llvm::MachineFunction& MF
¶void emitXRayTable()
void emitXRayTable()
Description
Emit a table with all XRay instrumentation points.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:291
¶void getAnalysisUsage(
llvm::AnalysisUsage& AU) const
void getAnalysisUsage(
llvm::AnalysisUsage& AU) const
Description
Record analysis usage.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:301
Parameters
¶llvm::MCSymbol* getCurExceptionSym()
llvm::MCSymbol* getCurExceptionSym()
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:224
¶const llvm::MCSection* getCurrentSection() const
const llvm::MCSection* getCurrentSection() const
Description
Return the current section we are emitting to.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:244
¶const llvm::DataLayout& getDataLayout() const
const llvm::DataLayout& getDataLayout() const
Description
Return information about data layout.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:230
¶llvm::DwarfDebug* getDwarfDebug()
llvm::DwarfDebug* getDwarfDebug()
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:204
¶llvm::DwarfDebug* getDwarfDebug() const
llvm::DwarfDebug* getDwarfDebug() const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:205
¶uint16_t getDwarfVersion() const
uint16_t getDwarfVersion() const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:207
¶llvm::MCSymbol* getFunctionBegin() const
llvm::MCSymbol* getFunctionBegin() const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:222
¶llvm::MCSymbol* getFunctionEnd() const
llvm::MCSymbol* getFunctionEnd() const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:223
¶virtual const llvm::MCSymbol*
getFunctionFrameSymbol() const
virtual const llvm::MCSymbol*
getFunctionFrameSymbol() const
Description
Return symbol for the function pseudo stack if the stack frame is not a register based.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:220
¶unsigned int getFunctionNumber() const
unsigned int getFunctionNumber() const
Description
Return a unique ID for the current function.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:216
¶static llvm::Align getGVAlignment(
const llvm::GlobalValue* GV,
const llvm::DataLayout& DL,
llvm::Align InAlign = Align::None())
static llvm::Align getGVAlignment(
const llvm::GlobalValue* GV,
const llvm::DataLayout& DL,
llvm::Align InAlign = Align::None())
Description
Return the alignment for the specified \p GV.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:662
Parameters
- const llvm::GlobalValue* GV
- const llvm::DataLayout& DL
- llvm::Align InAlign = Align::None()
¶virtual unsigned int getISAEncoding()
virtual unsigned int getISAEncoding()
Description
Get the value for DW_AT_APPLE_isa. Zero if no isa encoding specified.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:576
¶void getNameWithPrefix(
SmallVectorImpl<char>& Name,
const llvm::GlobalValue* GV) const
void getNameWithPrefix(
SmallVectorImpl<char>& Name,
const llvm::GlobalValue* GV) const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:246
Parameters
- SmallVectorImpl<char>& Name
- const llvm::GlobalValue* GV
¶const llvm::TargetLoweringObjectFile&
getObjFileLowering() const
const llvm::TargetLoweringObjectFile&
getObjFileLowering() const
Description
Return information about object file lowering.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:227
¶unsigned int getPointerSize() const
unsigned int getPointerSize() const
Description
Return the pointer size from the TargetMachine
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:233
¶const llvm::MCSubtargetInfo& getSubtargetInfo()
const
const llvm::MCSubtargetInfo& getSubtargetInfo()
const
Description
Return information about subtarget.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:236
¶llvm::MCSymbol* getSymbol(
const llvm::GlobalValue* GV) const
llvm::MCSymbol* getSymbol(
const llvm::GlobalValue* GV) const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:249
Parameters
- const llvm::GlobalValue* GV
¶llvm::MCSymbol* getSymbolWithGlobalValueBase(
const llvm::GlobalValue* GV,
llvm::StringRef Suffix) const
llvm::MCSymbol* getSymbolWithGlobalValueBase(
const llvm::GlobalValue* GV,
llvm::StringRef Suffix) const
Description
Return the MCSymbol for a private symbol with global value name as its base, with the specified suffix.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:467
Parameters
- const llvm::GlobalValue* GV
- llvm::StringRef Suffix
¶virtual bool isBlockOnlyReachableByFallthrough(
const llvm::MachineBasicBlock* MBB) const
virtual bool isBlockOnlyReachableByFallthrough(
const llvm::MachineBasicBlock* MBB) const
Description
Return true if the basic block has exactly one predecessor and the control transfer mechanism between the predecessor and this block is a fall-through.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:450
Parameters
- const llvm::MachineBasicBlock* MBB
¶bool isPositionIndependent() const
bool isPositionIndependent() const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:210
¶bool isVerbose() const
bool isVerbose() const
Description
Return true if assembly output should contain comments.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:213
¶virtual const llvm::MCExpr* lowerConstant(
const llvm::Constant* CV)
virtual const llvm::MCExpr* lowerConstant(
const llvm::Constant* CV)
Description
Lower the specified LLVM Constant to an MCExpr.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:369
Parameters
- const llvm::Constant* CV
¶llvm::AsmPrinter::CFIMoveType needsCFIMoves()
const
llvm::AsmPrinter::CFIMoveType needsCFIMoves()
const
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:338
¶bool needsOnlyDebugCFIMoves() const
bool needsOnlyDebugCFIMoves() const
Description
Returns false if needsCFIMoves() == CFI_M_EH for any function in the module.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:342
¶bool needsSEHMoves()
bool needsSEHMoves()
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:344
¶void printOffset(int64_t Offset,
llvm::raw_ostream& OS) const
void printOffset(int64_t Offset,
llvm::raw_ostream& OS) const
Description
This is just convenient handler for printing offsets.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:490
Parameters
- int64_t Offset
- llvm::raw_ostream& OS
¶void recordSled(llvm::MCSymbol* Sled,
const llvm::MachineInstr& MI,
llvm::AsmPrinter::SledKind Kind,
uint8_t Version = 0)
void recordSled(llvm::MCSymbol* Sled,
const llvm::MachineInstr& MI,
llvm::AsmPrinter::SledKind Kind,
uint8_t Version = 0)
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:287
Parameters
- llvm::MCSymbol* Sled
- const llvm::MachineInstr& MI
- llvm::AsmPrinter::SledKind Kind
- uint8_t Version = 0
¶bool runOnMachineFunction(
llvm::MachineFunction& MF)
bool runOnMachineFunction(
llvm::MachineFunction& MF)
Description
Emit the specified function out to the OutStreamer.
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:312
Parameters
¶void setDwarfVersion(uint16_t Version)
void setDwarfVersion(uint16_t Version)
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:208
Parameters
- uint16_t Version
¶~AsmPrinter()
~AsmPrinter()
Declared at: llvm/include/llvm/CodeGen/AsmPrinter.h:202