Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
llvm::MCStreamer Class Referenceabstract

Streaming machine code generation interface. More...

#include "llvm/MC/MCStreamer.h"

Inheritance diagram for llvm::MCStreamer:
[legend]

Public Member Functions

 MCStreamer (const MCStreamer &)=delete
MCStreameroperator= (const MCStreamer &)=delete
virtual ~MCStreamer ()
void visitUsedExpr (const MCExpr &Expr)
virtual void visitUsedSymbol (const MCSymbol &Sym)
void setTargetStreamer (MCTargetStreamer *TS)
void setStartTokLocPtr (const SMLoc *Loc)
SMLoc getStartTokLoc () const
virtual void reset ()
 State management.
MCContextgetContext () const
bool isObj () const
virtual MCAssemblergetAssemblerPtr ()
void setUseAssemblerInfoForParsing (bool v)
bool getUseAssemblerInfoForParsing ()
MCTargetStreamergetTargetStreamer ()
void setAllowAutoPadding (bool v)
bool getAllowAutoPadding () const
MCSymbolemitLineTableLabel ()
virtual MCSymbolemitCFILabel ()
 When emitting an object file, create and emit a real label.
WinEH::FrameInfoEnsureValidWinFrameInfo (SMLoc Loc)
 Retrieve the current frame info if one is available and it is not yet closed.
unsigned getNumFrameInfos ()
ArrayRef< MCDwarfFrameInfogetDwarfFrameInfos () const
bool hasUnfinishedDwarfFrameInfo ()
unsigned getNumWinFrameInfos ()
ArrayRef< std::unique_ptr< WinEH::FrameInfo > > getWinFrameInfos () const
WinEH::FrameInfo::EpiloggetCurrentWinEpilog () const
bool isInEpilogCFI () const
void generateCompactUnwindEncodings (MCAsmBackend *MAB)
virtual void emitFileDirective (StringRef Filename)
 Switch to a new logical file.
virtual void emitFileDirective (StringRef Filename, StringRef CompilerVersion, StringRef TimeStamp, StringRef Description)
 Emit ".file assembler diretive with additioal info.
virtual void emitIdent (StringRef IdentString)
 Emit the "identifiers" directive.
unsigned emitDwarfFileDirective (unsigned FileNo, StringRef Directory, StringRef Filename, std::optional< MD5::MD5Result > Checksum=std::nullopt, std::optional< StringRef > Source=std::nullopt, unsigned CUID=0)
 Associate a filename with a specified logical file number.
virtual Expected< unsignedtryEmitDwarfFileDirective (unsigned FileNo, StringRef Directory, StringRef Filename, std::optional< MD5::MD5Result > Checksum=std::nullopt, std::optional< StringRef > Source=std::nullopt, unsigned CUID=0)
 Associate a filename with a specified logical file number.
virtual void emitDwarfFile0Directive (StringRef Directory, StringRef Filename, std::optional< MD5::MD5Result > Checksum, std::optional< StringRef > Source, unsigned CUID=0)
 Specify the "root" file of the compilation, using the ".file 0" extension.
virtual void emitCFIBKeyFrame ()
virtual void emitCFIMTETaggedFrame ()
virtual void emitDwarfLocDirective (unsigned FileNo, unsigned Line, unsigned Column, unsigned Flags, unsigned Isa, unsigned Discriminator, StringRef FileName, StringRef Comment={})
 This implements the DWARF2 '.loc fileno lineno ...' assembler directive.
virtual void emitDwarfLocLabelDirective (SMLoc Loc, StringRef Name)
 This implements the '.loc_label Name' directive.
virtual bool emitCVFileDirective (unsigned FileNo, StringRef Filename, ArrayRef< uint8_t > Checksum, unsigned ChecksumKind)
 Associate a filename with a specified logical file number, and also specify that file's checksum information.
virtual bool emitCVFuncIdDirective (unsigned FunctionId)
 Introduces a function id for use with .cv_loc.
virtual bool emitCVInlineSiteIdDirective (unsigned FunctionId, unsigned IAFunc, unsigned IAFile, unsigned IALine, unsigned IACol, SMLoc Loc)
 Introduces an inline call site id for use with .cv_loc.
virtual void emitCVLocDirective (unsigned FunctionId, unsigned FileNo, unsigned Line, unsigned Column, bool PrologueEnd, bool IsStmt, StringRef FileName, SMLoc Loc)
 This implements the CodeView '.cv_loc' assembler directive.
virtual void emitCVLinetableDirective (unsigned FunctionId, const MCSymbol *FnStart, const MCSymbol *FnEnd)
 This implements the CodeView '.cv_linetable' assembler directive.
virtual void emitCVInlineLinetableDirective (unsigned PrimaryFunctionId, unsigned SourceFileId, unsigned SourceLineNum, const MCSymbol *FnStartSym, const MCSymbol *FnEndSym)
 This implements the CodeView '.cv_inline_linetable' assembler directive.
virtual void emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, StringRef FixedSizePortion)
 This implements the CodeView '.cv_def_range' assembler directive.
virtual void emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, codeview::DefRangeRegisterRelHeader DRHdr)
virtual void emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, codeview::DefRangeSubfieldRegisterHeader DRHdr)
virtual void emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, codeview::DefRangeRegisterHeader DRHdr)
virtual void emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, codeview::DefRangeFramePointerRelHeader DRHdr)
virtual void emitCVStringTableDirective ()
 This implements the CodeView '.cv_stringtable' assembler directive.
virtual void emitCVFileChecksumsDirective ()
 This implements the CodeView '.cv_filechecksums' assembler directive.
virtual void emitCVFileChecksumOffsetDirective (unsigned FileNo)
 This implements the CodeView '.cv_filechecksumoffset' assembler directive.
virtual void emitCVFPOData (const MCSymbol *ProcSym, SMLoc Loc={})
 This implements the CodeView '.cv_fpo_data' assembler directive.
virtual void emitAbsoluteSymbolDiff (const MCSymbol *Hi, const MCSymbol *Lo, unsigned Size)
 Emit the absolute difference between two symbols.
virtual void emitAbsoluteSymbolDiffAsULEB128 (const MCSymbol *Hi, const MCSymbol *Lo)
 Emit the absolute difference between two symbols encoded with ULEB128.
virtual MCSymbolgetDwarfLineTableSymbol (unsigned CUID)
virtual void emitCFISections (bool EH, bool Debug, bool SFrame)
void emitCFIStartProc (bool IsSimple, SMLoc Loc=SMLoc())
void emitCFIEndProc ()
virtual void emitCFIDefCfa (int64_t Register, int64_t Offset, SMLoc Loc={})
virtual void emitCFIDefCfaOffset (int64_t Offset, SMLoc Loc={})
virtual void emitCFIDefCfaRegister (int64_t Register, SMLoc Loc={})
virtual void emitCFILLVMDefAspaceCfa (int64_t Register, int64_t Offset, int64_t AddressSpace, SMLoc Loc={})
virtual void emitCFIOffset (int64_t Register, int64_t Offset, SMLoc Loc={})
virtual void emitCFIPersonality (const MCSymbol *Sym, unsigned Encoding)
virtual void emitCFILsda (const MCSymbol *Sym, unsigned Encoding)
virtual void emitCFIRememberState (SMLoc Loc)
virtual void emitCFIRestoreState (SMLoc Loc)
virtual void emitCFISameValue (int64_t Register, SMLoc Loc={})
virtual void emitCFIRestore (int64_t Register, SMLoc Loc={})
virtual void emitCFIRelOffset (int64_t Register, int64_t Offset, SMLoc Loc)
virtual void emitCFIAdjustCfaOffset (int64_t Adjustment, SMLoc Loc={})
virtual void emitCFIEscape (StringRef Values, SMLoc Loc={})
virtual void emitCFIReturnColumn (int64_t Register)
virtual void emitCFIGnuArgsSize (int64_t Size, SMLoc Loc={})
virtual void emitCFISignalFrame ()
virtual void emitCFIUndefined (int64_t Register, SMLoc Loc={})
virtual void emitCFIRegister (int64_t Register1, int64_t Register2, SMLoc Loc={})
virtual void emitCFIWindowSave (SMLoc Loc={})
virtual void emitCFINegateRAState (SMLoc Loc={})
virtual void emitCFINegateRAStateWithPC (SMLoc Loc={})
virtual void emitCFILabelDirective (SMLoc Loc, StringRef Name)
virtual void emitCFIValOffset (int64_t Register, int64_t Offset, SMLoc Loc={})
virtual void emitWinCFIStartProc (const MCSymbol *Symbol, SMLoc Loc=SMLoc())
virtual void emitWinCFIEndProc (SMLoc Loc=SMLoc())
virtual void emitWinCFIFuncletOrFuncEnd (SMLoc Loc=SMLoc())
 This is used on platforms, such as Windows on ARM64, that require function or funclet sizes to be emitted in .xdata before the End marker is emitted for the frame.
virtual void emitWinCFIStartChained (SMLoc Loc=SMLoc())
virtual void emitWinCFIEndChained (SMLoc Loc=SMLoc())
virtual void emitWinCFIPushReg (MCRegister Register, SMLoc Loc=SMLoc())
virtual void emitWinCFISetFrame (MCRegister Register, unsigned Offset, SMLoc Loc=SMLoc())
virtual void emitWinCFIAllocStack (unsigned Size, SMLoc Loc=SMLoc())
virtual void emitWinCFISaveReg (MCRegister Register, unsigned Offset, SMLoc Loc=SMLoc())
virtual void emitWinCFISaveXMM (MCRegister Register, unsigned Offset, SMLoc Loc=SMLoc())
virtual void emitWinCFIPushFrame (bool Code, SMLoc Loc=SMLoc())
virtual void emitWinCFIEndProlog (SMLoc Loc=SMLoc())
virtual void emitWinCFIBeginEpilogue (SMLoc Loc=SMLoc())
virtual void emitWinCFIEndEpilogue (SMLoc Loc=SMLoc())
virtual void emitWinCFIUnwindV2Start (SMLoc Loc=SMLoc())
virtual void emitWinCFIUnwindVersion (uint8_t Version, SMLoc Loc=SMLoc())
virtual void emitWinEHHandler (const MCSymbol *Sym, bool Unwind, bool Except, SMLoc Loc=SMLoc())
virtual void emitWinEHHandlerData (SMLoc Loc=SMLoc())
virtual void emitCGProfileEntry (const MCSymbolRefExpr *From, const MCSymbolRefExpr *To, uint64_t Count)
MCSectiongetAssociatedPDataSection (const MCSection *TextSec)
 Get the .pdata section used for the given section.
MCSectiongetAssociatedXDataSection (const MCSection *TextSec)
 Get the .xdata section used for the given section.
virtual void emitSyntaxDirective ()
virtual void emitRelocDirective (const MCExpr &Offset, StringRef Name, const MCExpr *Expr, SMLoc Loc={})
 Record a relocation described by the .reloc directive.
virtual void emitAddrsig ()
virtual void emitAddrsigSym (const MCSymbol *Sym)
virtual void emitInstruction (const MCInst &Inst, const MCSubtargetInfo &STI)
 Emit the given Instruction into the current section.
virtual void emitPseudoProbe (uint64_t Guid, uint64_t Index, uint64_t Type, uint64_t Attr, uint64_t Discriminator, const MCPseudoProbeInlineStack &InlineStack, MCSymbol *FnSym)
 Emit the a pseudo probe into the current section.
void emitRawText (const Twine &String)
 If this file is backed by a assembly streamer, this dumps the specified string in the output .s file.
virtual void finishImpl ()
 Streamer specific finalization.
void finish (SMLoc EndLoc=SMLoc())
 Finish emission of machine code.
virtual bool mayHaveInstructions (MCSection &Sec) const
void maybeEmitDwarf64Mark ()
 Emit a special value of 0xffffffff if producing 64-bit debugging info.
virtual void emitDwarfUnitLength (uint64_t Length, const Twine &Comment)
 Emit a unit length field.
virtual MCSymbolemitDwarfUnitLength (const Twine &Prefix, const Twine &Comment)
 Emit a unit length field.
virtual void emitDwarfLineStartLabel (MCSymbol *StartSym)
 Emit the debug line start label.
virtual void emitDwarfLineEndEntry (MCSection *Section, MCSymbol *LastLabel, MCSymbol *EndLabel=nullptr)
 Emit the debug line end entry.
virtual void emitDwarfAdvanceLineAddr (int64_t LineDelta, const MCSymbol *LastLabel, const MCSymbol *Label, unsigned PointerSize)
 If targets does not support representing debug line section by .loc/.file directives in assembly output, we need to populate debug line section with raw debug line contents.
Assembly File Formatting.
virtual bool isVerboseAsm () const
 Return true if this streamer supports verbose assembly and if it is enabled.
virtual bool hasRawTextSupport () const
 Return true if this asm streamer supports emitting unformatted text to the .s file with EmitRawText.
virtual bool isIntegratedAssemblerRequired () const
 Is the integrated assembler required for this streamer to function correctly?
virtual void AddComment (const Twine &T, bool EOL=true)
 Add a textual comment.
virtual raw_ostreamgetCommentOS ()
 Return a raw_ostream that comments can be written to.
virtual void emitRawComment (const Twine &T, bool TabPrefix=true)
 Print T and prefix it with the comment string (normally #) and optionally a tab.
virtual void addExplicitComment (const Twine &T)
 Add explicit comment T.
virtual void emitExplicitComments ()
 Emit added explicit comments.
virtual void addBlankLine ()
 Emit a blank line to a .s file to pretty it up.
Symbol & Section Management
MCSectionSubPair getCurrentSection () const
 Return the current section that the streamer is emitting code to.
MCSectiongetCurrentSectionOnly () const
MCSectionSubPair getPreviousSection () const
 Return the previous section that the streamer is emitting code to.
MCFragmentgetCurrentFragment () const
size_t getCurFragSize () const
void pushSection ()
 Save the current and previous section on the section stack.
virtual bool popSection ()
 Restore the current and previous section from the section stack.
virtual void switchSection (MCSection *Section, uint32_t Subsec=0)
 Set the current section where code is being emitted to Section.
bool switchSection (MCSection *Section, const MCExpr *)
void switchSectionNoPrint (MCSection *Section)
 Similar to switchSection, but does not print the section directive.
virtual void initSections (bool NoExecStack, const MCSubtargetInfo &STI)
 Create the default sections and set the initial one.
MCSymbolendSection (MCSection *Section)
virtual StringRef getMnemonic (const MCInst &MI) const
 Returns the mnemonic for MI, if the streamer has access to a instruction printer and returns an empty string otherwise.
virtual void emitLabel (MCSymbol *Symbol, SMLoc Loc=SMLoc())
 Emit a label for Symbol into the current section.
virtual void emitEHSymAttributes (const MCSymbol *Symbol, MCSymbol *EHSymbol)
virtual void emitSubsectionsViaSymbols ()
 Emit a .subsection_via_symbols directive.
virtual void emitLinkerOptions (ArrayRef< std::string > Kind)
 Emit the given list Options of strings as linker options into the output.
virtual void emitDataRegion (MCDataRegionType Kind)
 Note in the output the specified region Kind.
virtual void emitVersionMin (MCVersionMinType Type, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
 Specify the Mach-O minimum deployment target version.
virtual void emitBuildVersion (unsigned Platform, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
 Emit/Specify Mach-O build version command.
virtual void emitDarwinTargetVariantBuildVersion (unsigned Platform, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
void emitVersionForTarget (const Triple &Target, const VersionTuple &SDKVersion, const Triple *DarwinTargetVariantTriple, const VersionTuple &DarwinTargetVariantSDKVersion)
virtual void emitAssignment (MCSymbol *Symbol, const MCExpr *Value)
 Emit an assignment of Value to Symbol.
virtual void emitConditionalAssignment (MCSymbol *Symbol, const MCExpr *Value)
 Emit an assignment of Value to Symbol, but only if Value is also emitted.
virtual void emitWeakReference (MCSymbol *Alias, const MCSymbol *Symbol)
 Emit an weak reference from Alias to Symbol.
virtual bool emitSymbolAttribute (MCSymbol *Symbol, MCSymbolAttr Attribute)=0
 Add the given Attribute to Symbol.
virtual void emitSymbolDesc (MCSymbol *Symbol, unsigned DescValue)
 Set the DescValue for the Symbol.
virtual void beginCOFFSymbolDef (const MCSymbol *Symbol)
 Start emitting COFF symbol definition.
virtual void emitCOFFSymbolStorageClass (int StorageClass)
 Emit the storage class of the symbol.
virtual void emitCOFFSymbolType (int Type)
 Emit the type of the symbol.
virtual void endCOFFSymbolDef ()
 Marks the end of the symbol definition.
virtual void emitCOFFSafeSEH (MCSymbol const *Symbol)
virtual void emitCOFFSymbolIndex (MCSymbol const *Symbol)
 Emits the symbol table index of a Symbol into the current section.
virtual void emitCOFFSectionIndex (MCSymbol const *Symbol)
 Emits a COFF section index.
virtual void emitCOFFSecRel32 (MCSymbol const *Symbol, uint64_t Offset)
 Emits a COFF section relative relocation.
virtual void emitCOFFImgRel32 (MCSymbol const *Symbol, int64_t Offset)
 Emits a COFF image relative relocation.
virtual void emitCOFFSecNumber (MCSymbol const *Symbol)
 Emits the physical number of the section containing the given symbol as assigned during object writing (i.e., this is not a runtime relocation).
virtual void emitCOFFSecOffset (MCSymbol const *Symbol)
 Emits the offset of the symbol from the beginning of the section during object writing (i.e., this is not a runtime relocation).
virtual void emitXCOFFLocalCommonSymbol (MCSymbol *LabelSym, uint64_t Size, MCSymbol *CsectSym, Align Alignment)
 Emits an lcomm directive with XCOFF csect information.
virtual void emitXCOFFSymbolLinkageWithVisibility (MCSymbol *Symbol, MCSymbolAttr Linkage, MCSymbolAttr Visibility)
 Emit a symbol's linkage and visibility with a linkage directive for XCOFF.
virtual void emitXCOFFRenameDirective (const MCSymbol *Name, StringRef Rename)
 Emit a XCOFF .rename directive which creates a synonym for an illegal or undesirable name.
virtual void emitXCOFFExceptDirective (const MCSymbol *Symbol, const MCSymbol *Trap, unsigned Lang, unsigned Reason, unsigned FunctionSize, bool hasDebug)
 Emit an XCOFF .except directive which adds information about a trap instruction to the object file exception section.
virtual void emitXCOFFRefDirective (const MCSymbol *Symbol)
 Emit a XCOFF .ref directive which creates R_REF type entry in the relocation table for one or more symbols.
virtual void emitXCOFFCInfoSym (StringRef Name, StringRef Metadata)
 Emit a C_INFO symbol with XCOFF embedded metadata to the .info section.
virtual void emitELFSize (MCSymbol *Symbol, const MCExpr *Value)
 Emit an ELF .size directive.
virtual void emitELFSymverDirective (const MCSymbol *OriginalSym, StringRef Name, bool KeepOriginalSym)
 Emit an ELF .symver directive.
virtual void emitLOHDirective (MCLOHType Kind, const MCLOHArgs &Args)
 Emit a Linker Optimization Hint (LOH) directive.
virtual void emitGNUAttribute (unsigned Tag, unsigned Value)
 Emit a .gnu_attribute directive.
virtual void emitCommonSymbol (MCSymbol *Symbol, uint64_t Size, Align ByteAlignment)=0
 Emit a common symbol.
virtual void emitLocalCommonSymbol (MCSymbol *Symbol, uint64_t Size, Align ByteAlignment)
 Emit a local common (.lcomm) symbol.
virtual void emitZerofill (MCSection *Section, MCSymbol *Symbol=nullptr, uint64_t Size=0, Align ByteAlignment=Align(1), SMLoc Loc=SMLoc())
 Emit the zerofill section and an optional symbol.
virtual void emitTBSSSymbol (MCSection *Section, MCSymbol *Symbol, uint64_t Size, Align ByteAlignment=Align(1))
 Emit a thread local bss (.tbss) symbol.
Generating Data
virtual void emitBytes (StringRef Data)
 Emit the bytes in Data into the output.
virtual void emitBinaryData (StringRef Data)
 Functionally identical to EmitBytes.
virtual void emitValueImpl (const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())
 Emit the expression Value into the output as a native integer of the given Size bytes.
void emitValue (const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())
virtual void emitIntValue (uint64_t Value, unsigned Size)
 Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers.
virtual void emitIntValue (const APInt &Value)
virtual void emitIntValueInHex (uint64_t Value, unsigned Size)
 Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers & prints in Hex format for certain modes.
void emitInt8 (uint64_t Value)
void emitInt16 (uint64_t Value)
void emitInt32 (uint64_t Value)
void emitInt64 (uint64_t Value)
virtual void emitIntValueInHexWithPadding (uint64_t Value, unsigned Size)
 Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers & prints in Hex format for certain modes, pads the field with leading zeros to Size width.
virtual void emitULEB128Value (const MCExpr *Value)
virtual void emitSLEB128Value (const MCExpr *Value)
unsigned emitULEB128IntValue (uint64_t Value, unsigned PadTo=0)
 Special case of EmitULEB128Value that avoids the client having to pass in a MCExpr for constant integers.
unsigned emitSLEB128IntValue (int64_t Value)
 Special case of EmitSLEB128Value that avoids the client having to pass in a MCExpr for constant integers.
void emitSymbolValue (const MCSymbol *Sym, unsigned Size, bool IsSectionRelative=false)
 Special case of EmitValue that avoids the client having to pass in a MCExpr for MCSymbols.
void emitFill (uint64_t NumBytes, uint8_t FillValue)
 Emit NumBytes bytes worth of the value specified by FillValue.
virtual void emitFill (const MCExpr &NumBytes, uint64_t FillValue, SMLoc Loc=SMLoc())
 Emit Size bytes worth of the value specified by FillValue.
virtual void emitFill (const MCExpr &NumValues, int64_t Size, int64_t Expr, SMLoc Loc=SMLoc())
 Emit NumValues copies of Size bytes.
virtual void emitNops (int64_t NumBytes, int64_t ControlledNopLength, SMLoc Loc, const MCSubtargetInfo &STI)
void emitZeros (uint64_t NumBytes)
 Emit NumBytes worth of zeros.
virtual void emitValueToAlignment (Align Alignment, int64_t Fill=0, uint8_t FillLen=1, unsigned MaxBytesToEmit=0)
 Emit some number of copies of Value until the byte alignment ByteAlignment is reached.
virtual void emitCodeAlignment (Align Alignment, const MCSubtargetInfo *STI, unsigned MaxBytesToEmit=0)
 Emit nops until the byte alignment ByteAlignment is reached.
virtual void emitValueToOffset (const MCExpr *Offset, unsigned char Value, SMLoc Loc)
 Emit some number of copies of Value until the byte offset Offset is reached.

Protected Member Functions

 MCStreamer (MCContext &Ctx)
virtual void changeSection (MCSection *, uint32_t)
 This is called by popSection and switchSection, if the current section changes.
void addFragment (MCFragment *F)
virtual void emitCFIStartProcImpl (MCDwarfFrameInfo &Frame)
virtual void emitCFIEndProcImpl (MCDwarfFrameInfo &CurFrame)
WinEH::FrameInfogetCurrentWinFrameInfo ()
virtual void emitWindowsUnwindTables (WinEH::FrameInfo *Frame)
virtual void emitWindowsUnwindTables ()
virtual void emitRawTextImpl (StringRef String)
 EmitRawText - If this file is backed by an assembly streamer, this dumps the specified string in the output .s file.
bool checkCVLocSection (unsigned FuncId, unsigned FileNo, SMLoc Loc)
 Returns true if the .cv_loc directive is in the right section.

Protected Attributes

bool IsObj = false
WinEH::FrameInfo::EpilogCurrentWinEpilog = nullptr
MCFragmentCurFrag = nullptr

Detailed Description

Streaming machine code generation interface.

This interface is intended to provide a programmatic interface that is very similar to the level that an assembler .s file provides. It has callbacks to emit bytes, handle directives, etc. The implementation of this interface retains state to know what the current section is etc.

There are multiple implementations of this interface: one for writing out a .s file, and implementations that write out .o files of various formats.

Definition at line 220 of file MCStreamer.h.

Constructor & Destructor Documentation

◆ MCStreamer() [1/2]

◆ MCStreamer() [2/2]

llvm::MCStreamer::MCStreamer ( const MCStreamer & )
delete

References MCStreamer().

◆ ~MCStreamer()

MCStreamer::~MCStreamer ( )
virtualdefault

Member Function Documentation

◆ addBlankLine()

virtual void llvm::MCStreamer::addBlankLine ( )
inlinevirtual

◆ AddComment()

virtual void llvm::MCStreamer::AddComment ( const Twine & T,
bool EOL = true )
inlinevirtual

Add a textual comment.

Typically for comments that can be emitted to the generated .s file if applicable as a QoI issue to make the output of the compiler more readable. This only affects the MCAsmStreamer, and only when verbose assembly output is enabled.

If the comment includes embedded
's, they will each get the comment prefix as appropriate. The added comment should not end with a
. By default, each comment is terminated with an end of line, i.e. the EOL param is set to true by default. If one prefers not to end the comment with a new line then the EOL param should be passed with a false value.

Reimplemented in llvm::SystemZHLASMAsmStreamer.

Definition at line 387 of file MCStreamer.h.

References T.

Referenced by addConstantComments(), emitDwarfUnitLength(), emitDwarfUnitLength(), emitGenDwarfRanges(), llvm::CodeViewContext::emitLineTableForFunction(), llvm::mcdwarf::emitListsTableHeaderStart(), llvm::BTFTypeBase::emitType(), llvm::BTFTypeEnum64::emitType(), llvm::BTFTypeInt::emitType(), llvm::BTFTypeStruct::emitType(), maybeEmitDwarf64Mark(), printBroadcast(), printExtend(), printZeroExtend(), and printZeroUpperMove().

◆ addExplicitComment()

void MCStreamer::addExplicitComment ( const Twine & T)
virtual

Add explicit comment T.

T is required to be a valid comment in the output and does not need to be escaped.

Definition at line 121 of file MCStreamer.cpp.

References T.

◆ addFragment()

void MCStreamer::addFragment ( MCFragment * F)
protected

Definition at line 1411 of file MCStreamer.cpp.

References CurFrag, and F.

Referenced by llvm::MCObjectStreamer::ensureHeadroom(), and llvm::MCObjectStreamer::newFragment().

◆ beginCOFFSymbolDef()

void MCStreamer::beginCOFFSymbolDef ( const MCSymbol * Symbol)
virtual

Start emitting COFF symbol definition.

Parameters
Symbol- The symbol to have its External & Type fields set.

Reimplemented in llvm::CFIFunctionFrameStreamer, llvm::MCWinCOFFStreamer, and llvm::RecordStreamer.

Definition at line 1256 of file MCStreamer.cpp.

References llvm_unreachable.

Referenced by emitSymbolAttribute().

◆ changeSection()

◆ checkCVLocSection()

bool MCStreamer::checkCVLocSection ( unsigned FuncId,
unsigned FileNo,
SMLoc Loc )
protected

◆ emitAbsoluteSymbolDiff()

void MCStreamer::emitAbsoluteSymbolDiff ( const MCSymbol * Hi,
const MCSymbol * Lo,
unsigned Size )
virtual

◆ emitAbsoluteSymbolDiffAsULEB128()

void MCStreamer::emitAbsoluteSymbolDiffAsULEB128 ( const MCSymbol * Hi,
const MCSymbol * Lo )
virtual

Emit the absolute difference between two symbols encoded with ULEB128.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1241 of file MCStreamer.cpp.

References llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createSub(), emitULEB128Value(), llvm::Hi, and llvm::Lo.

Referenced by llvm::MCObjectStreamer::emitAbsoluteSymbolDiffAsULEB128().

◆ emitAddrsig()

virtual void llvm::MCStreamer::emitAddrsig ( )
inlinevirtual

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1064 of file MCStreamer.h.

◆ emitAddrsigSym()

virtual void llvm::MCStreamer::emitAddrsigSym ( const MCSymbol * Sym)
inlinevirtual

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1065 of file MCStreamer.h.

◆ emitAssignment()

void MCStreamer::emitAssignment ( MCSymbol * Symbol,
const MCExpr * Value )
virtual

Emit an assignment of Value to Symbol.

This corresponds to an assembler statement such as: symbol = value

The assignment generates no code, but has the side effect of binding the value in the current context. For the assembly streamer, this prints the binding into the .s file.

Parameters
Symbol- The symbol being assigned to.
Value- The value for the symbol.

Reimplemented in llvm::MCObjectStreamer, and llvm::RecordStreamer.

Definition at line 1146 of file MCStreamer.cpp.

References llvm::MCTargetStreamer::emitAssignment(), getTargetStreamer(), and visitUsedExpr().

Referenced by emitAbsoluteSymbolDiff(), llvm::MCObjectStreamer::emitAssignment(), llvm::RecordStreamer::emitAssignment(), llvm::RecordStreamer::flushSymverDirectives(), forceExpAbs(), and llvm::MCContext::setSymbolValue().

◆ emitBinaryData()

void MCStreamer::emitBinaryData ( StringRef Data)
virtual

Functionally identical to EmitBytes.

When emitting textual assembly, this method uses .byte directives instead of .ascii or .asciz for readability.

Definition at line 1332 of file MCStreamer.cpp.

References llvm::Data, and emitBytes().

Referenced by llvm::AsmPrinter::XRayFunctionEntry::emit(), emitCommonSymbol(), emitOneV5FileEntry(), and llvm::MCDwarfLineStr::emitSection().

◆ emitBuildVersion()

virtual void llvm::MCStreamer::emitBuildVersion ( unsigned Platform,
unsigned Major,
unsigned Minor,
unsigned Update,
VersionTuple SDKVersion )
inlinevirtual

Emit/Specify Mach-O build version command.

Platform should be one of MachO::PlatformType.

Definition at line 504 of file MCStreamer.h.

Referenced by emitVersionForTarget().

◆ emitBytes()

◆ emitCFIAdjustCfaOffset()

void MCStreamer::emitCFIAdjustCfaOffset ( int64_t Adjustment,
SMLoc Loc = {} )
virtual

◆ emitCFIBKeyFrame()

void MCStreamer::emitCFIBKeyFrame ( )
virtual

Definition at line 223 of file MCStreamer.cpp.

References llvm::MCDwarfFrameInfo::IsBKeyFrame.

◆ emitCFIDefCfa()

void MCStreamer::emitCFIDefCfa ( int64_t Register,
int64_t Offset,
SMLoc Loc = {} )
virtual

◆ emitCFIDefCfaOffset()

void MCStreamer::emitCFIDefCfaOffset ( int64_t Offset,
SMLoc Loc = {} )
virtual

◆ emitCFIDefCfaRegister()

void MCStreamer::emitCFIDefCfaRegister ( int64_t Register,
SMLoc Loc = {} )
virtual

◆ emitCFIEndProc()

void MCStreamer::emitCFIEndProc ( )

Definition at line 447 of file MCStreamer.cpp.

References emitCFIEndProcImpl().

◆ emitCFIEndProcImpl()

void MCStreamer::emitCFIEndProcImpl ( MCDwarfFrameInfo & CurFrame)
protectedvirtual

◆ emitCFIEscape()

void MCStreamer::emitCFIEscape ( StringRef Values,
SMLoc Loc = {} )
virtual

◆ emitCFIGnuArgsSize()

void MCStreamer::emitCFIGnuArgsSize ( int64_t Size,
SMLoc Loc = {} )
virtual

◆ emitCFILabel()

◆ emitCFILabelDirective()

void MCStreamer::emitCFILabelDirective ( SMLoc Loc,
StringRef Name )
virtual

◆ emitCFILLVMDefAspaceCfa()

void MCStreamer::emitCFILLVMDefAspaceCfa ( int64_t Register,
int64_t Offset,
int64_t AddressSpace,
SMLoc Loc = {} )
virtual

◆ emitCFILsda()

void MCStreamer::emitCFILsda ( const MCSymbol * Sym,
unsigned Encoding )
virtual

◆ emitCFIMTETaggedFrame()

void MCStreamer::emitCFIMTETaggedFrame ( )
virtual

Definition at line 230 of file MCStreamer.cpp.

References llvm::MCDwarfFrameInfo::IsMTETaggedFrame.

◆ emitCFINegateRAState()

void MCStreamer::emitCFINegateRAState ( SMLoc Loc = {})
virtual

◆ emitCFINegateRAStateWithPC()

void MCStreamer::emitCFINegateRAStateWithPC ( SMLoc Loc = {})
virtual

◆ emitCFIOffset()

void MCStreamer::emitCFIOffset ( int64_t Register,
int64_t Offset,
SMLoc Loc = {} )
virtual

◆ emitCFIPersonality()

void MCStreamer::emitCFIPersonality ( const MCSymbol * Sym,
unsigned Encoding )
virtual

◆ emitCFIRegister()

void MCStreamer::emitCFIRegister ( int64_t Register1,
int64_t Register2,
SMLoc Loc = {} )
virtual

◆ emitCFIRelOffset()

void MCStreamer::emitCFIRelOffset ( int64_t Register,
int64_t Offset,
SMLoc Loc )
virtual

◆ emitCFIRememberState()

void MCStreamer::emitCFIRememberState ( SMLoc Loc)
virtual

◆ emitCFIRestore()

void MCStreamer::emitCFIRestore ( int64_t Register,
SMLoc Loc = {} )
virtual

◆ emitCFIRestoreState()

void MCStreamer::emitCFIRestoreState ( SMLoc Loc)
virtual

◆ emitCFIReturnColumn()

void MCStreamer::emitCFIReturnColumn ( int64_t Register)
virtual

Definition at line 690 of file MCStreamer.cpp.

References llvm::MCDwarfFrameInfo::RAReg.

◆ emitCFISameValue()

void MCStreamer::emitCFISameValue ( int64_t Register,
SMLoc Loc = {} )
virtual

◆ emitCFISections()

void MCStreamer::emitCFISections ( bool EH,
bool Debug,
bool SFrame )
virtual

Reimplemented in llvm::MCObjectStreamer.

Definition at line 417 of file MCStreamer.cpp.

References Debug.

Referenced by llvm::MCObjectStreamer::emitCFISections().

◆ emitCFISignalFrame()

void MCStreamer::emitCFISignalFrame ( )
virtual

Definition at line 633 of file MCStreamer.cpp.

References llvm::MCDwarfFrameInfo::IsSignalFrame.

◆ emitCFIStartProc()

◆ emitCFIStartProcImpl()

void MCStreamer::emitCFIStartProcImpl ( MCDwarfFrameInfo & Frame)
protectedvirtual

◆ emitCFIUndefined()

void MCStreamer::emitCFIUndefined ( int64_t Register,
SMLoc Loc = {} )
virtual

◆ emitCFIValOffset()

void MCStreamer::emitCFIValOffset ( int64_t Register,
int64_t Offset,
SMLoc Loc = {} )
virtual

◆ emitCFIWindowSave()

void MCStreamer::emitCFIWindowSave ( SMLoc Loc = {})
virtual

◆ emitCGProfileEntry()

void MCStreamer::emitCGProfileEntry ( const MCSymbolRefExpr * From,
const MCSymbolRefExpr * To,
uint64_t Count )
virtual

◆ emitCodeAlignment()

void MCStreamer::emitCodeAlignment ( Align Alignment,
const MCSubtargetInfo * STI,
unsigned MaxBytesToEmit = 0 )
virtual

Emit nops until the byte alignment ByteAlignment is reached.

This used to align code where the alignment bytes may be executed. This can emit different bytes for different sizes to optimize execution.

Parameters
Alignment- The alignment to reach.
STI- The MCSubtargetInfo in operation when padding is emitted.
MaxBytesToEmit- The maximum numbers of bytes to emit, or 0. If the alignment cannot be reached in this many bytes, no bytes are emitted.

Reimplemented in llvm::MCObjectStreamer, and llvm::SystemZHLASMAsmStreamer.

Definition at line 1342 of file MCStreamer.cpp.

Referenced by llvm::CSKYConstantPool::emitAll(), and smallData().

◆ emitCOFFImgRel32()

void MCStreamer::emitCOFFImgRel32 ( MCSymbol const * Symbol,
int64_t Offset )
virtual

Emits a COFF image relative relocation.

Parameters
Symbol- Symbol the image relative relocation should point to.

Reimplemented in llvm::MCWinCOFFStreamer.

Definition at line 1070 of file MCStreamer.cpp.

References llvm::Offset.

Referenced by emitSymbolAttribute().

◆ emitCOFFSafeSEH()

void MCStreamer::emitCOFFSafeSEH ( MCSymbol const * Symbol)
virtual

Reimplemented in llvm::MCWinCOFFStreamer.

Definition at line 1062 of file MCStreamer.cpp.

Referenced by emitSymbolAttribute().

◆ emitCOFFSecNumber()

void MCStreamer::emitCOFFSecNumber ( MCSymbol const * Symbol)
virtual

Emits the physical number of the section containing the given symbol as assigned during object writing (i.e., this is not a runtime relocation).

Reimplemented in llvm::MCWinCOFFStreamer.

Definition at line 1072 of file MCStreamer.cpp.

Referenced by emitSymbolAttribute().

◆ emitCOFFSecOffset()

void MCStreamer::emitCOFFSecOffset ( MCSymbol const * Symbol)
virtual

Emits the offset of the symbol from the beginning of the section during object writing (i.e., this is not a runtime relocation).

Reimplemented in llvm::MCWinCOFFStreamer.

Definition at line 1074 of file MCStreamer.cpp.

Referenced by emitSymbolAttribute().

◆ emitCOFFSecRel32()

void MCStreamer::emitCOFFSecRel32 ( MCSymbol const * Symbol,
uint64_t Offset )
virtual

Emits a COFF section relative relocation.

Parameters
Symbol- Symbol the section relative relocation should point to.

Reimplemented in llvm::MCWinCOFFStreamer.

Definition at line 1068 of file MCStreamer.cpp.

References llvm::Offset.

Referenced by llvm::CodeViewContext::emitLineTableForFunction(), llvm::MCDwarfLineStr::emitRef(), emitSymbolAttribute(), and emitSymbolValue().

◆ emitCOFFSectionIndex()

void MCStreamer::emitCOFFSectionIndex ( MCSymbol const * Symbol)
virtual

Emits a COFF section index.

Parameters
Symbol- Symbol the section number relocation should point to.

Reimplemented in llvm::MCWinCOFFStreamer.

Definition at line 1066 of file MCStreamer.cpp.

Referenced by llvm::CodeViewContext::emitLineTableForFunction(), and emitSymbolAttribute().

◆ emitCOFFSymbolIndex()

void MCStreamer::emitCOFFSymbolIndex ( MCSymbol const * Symbol)
virtual

Emits the symbol table index of a Symbol into the current section.

Reimplemented in llvm::MCWinCOFFStreamer.

Definition at line 1064 of file MCStreamer.cpp.

Referenced by emitSymbolAttribute().

◆ emitCOFFSymbolStorageClass()

void MCStreamer::emitCOFFSymbolStorageClass ( int StorageClass)
virtual

Emit the storage class of the symbol.

Parameters
StorageClass- The storage class the symbol should have.

Reimplemented in llvm::CFIFunctionFrameStreamer, llvm::MCWinCOFFStreamer, and llvm::RecordStreamer.

Definition at line 1267 of file MCStreamer.cpp.

References llvm_unreachable.

Referenced by emitSymbolAttribute().

◆ emitCOFFSymbolType()

void MCStreamer::emitCOFFSymbolType ( int Type)
virtual

Emit the type of the symbol.

Parameters
Type- A COFF type identifier (see COFF::SymbolType in X86COFF.h)

Reimplemented in llvm::CFIFunctionFrameStreamer, llvm::MCWinCOFFStreamer, and llvm::RecordStreamer.

Definition at line 1270 of file MCStreamer.cpp.

References llvm_unreachable.

Referenced by emitSymbolAttribute().

◆ emitCommonSymbol()

virtual void llvm::MCStreamer::emitCommonSymbol ( MCSymbol * Symbol,
uint64_t Size,
Align ByteAlignment )
pure virtual

◆ emitConditionalAssignment()

void MCStreamer::emitConditionalAssignment ( MCSymbol * Symbol,
const MCExpr * Value )
virtual

Emit an assignment of Value to Symbol, but only if Value is also emitted.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 414 of file MCStreamer.cpp.

◆ emitCVDefRangeDirective() [1/5]

void MCStreamer::emitCVDefRangeDirective ( ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges,
codeview::DefRangeFramePointerRelHeader DRHdr )
virtual

Definition at line 378 of file MCStreamer.cpp.

References copyBytesForDefRange(), and emitCVDefRangeDirective().

◆ emitCVDefRangeDirective() [2/5]

void MCStreamer::emitCVDefRangeDirective ( ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges,
codeview::DefRangeRegisterHeader DRHdr )
virtual

Definition at line 370 of file MCStreamer.cpp.

References copyBytesForDefRange(), and emitCVDefRangeDirective().

◆ emitCVDefRangeDirective() [3/5]

void MCStreamer::emitCVDefRangeDirective ( ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges,
codeview::DefRangeRegisterRelHeader DRHdr )
virtual

Definition at line 353 of file MCStreamer.cpp.

References copyBytesForDefRange(), and emitCVDefRangeDirective().

◆ emitCVDefRangeDirective() [4/5]

void MCStreamer::emitCVDefRangeDirective ( ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges,
codeview::DefRangeSubfieldRegisterHeader DRHdr )
virtual

Definition at line 361 of file MCStreamer.cpp.

References copyBytesForDefRange(), and emitCVDefRangeDirective().

◆ emitCVDefRangeDirective() [5/5]

void MCStreamer::emitCVDefRangeDirective ( ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges,
StringRef FixedSizePortion )
virtual

This implements the CodeView '.cv_def_range' assembler directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 349 of file MCStreamer.cpp.

Referenced by llvm::MCObjectStreamer::emitCVDefRangeDirective(), emitCVDefRangeDirective(), emitCVDefRangeDirective(), emitCVDefRangeDirective(), and emitCVDefRangeDirective().

◆ emitCVFileChecksumOffsetDirective()

virtual void llvm::MCStreamer::emitCVFileChecksumOffsetDirective ( unsigned FileNo)
inlinevirtual

This implements the CodeView '.cv_filechecksumoffset' assembler directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 973 of file MCStreamer.h.

◆ emitCVFileChecksumsDirective()

virtual void llvm::MCStreamer::emitCVFileChecksumsDirective ( )
inlinevirtual

This implements the CodeView '.cv_filechecksums' assembler directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 969 of file MCStreamer.h.

◆ emitCVFileDirective()

bool MCStreamer::emitCVFileDirective ( unsigned FileNo,
StringRef Filename,
ArrayRef< uint8_t > Checksum,
unsigned ChecksumKind )
virtual

Associate a filename with a specified logical file number, and also specify that file's checksum information.

This implements the '.cv_file 4 "foo.c"' assembler directive. Returns true on success.

Definition at line 275 of file MCStreamer.cpp.

References llvm::CodeViewContext::addFile(), getContext(), and llvm::MCContext::getCVContext().

◆ emitCVFPOData()

virtual void llvm::MCStreamer::emitCVFPOData ( const MCSymbol * ProcSym,
SMLoc Loc = {} )
inlinevirtual

This implements the CodeView '.cv_fpo_data' assembler directive.

Definition at line 976 of file MCStreamer.h.

◆ emitCVFuncIdDirective()

bool MCStreamer::emitCVFuncIdDirective ( unsigned FunctionId)
virtual

Introduces a function id for use with .cv_loc.

Definition at line 282 of file MCStreamer.cpp.

References getContext(), llvm::MCContext::getCVContext(), and llvm::CodeViewContext::recordFunctionId().

◆ emitCVInlineLinetableDirective()

void MCStreamer::emitCVInlineLinetableDirective ( unsigned PrimaryFunctionId,
unsigned SourceFileId,
unsigned SourceLineNum,
const MCSymbol * FnStartSym,
const MCSymbol * FnEndSym )
virtual

This implements the CodeView '.cv_inline_linetable' assembler directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 331 of file MCStreamer.cpp.

Referenced by llvm::MCObjectStreamer::emitCVInlineLinetableDirective().

◆ emitCVInlineSiteIdDirective()

bool MCStreamer::emitCVInlineSiteIdDirective ( unsigned FunctionId,
unsigned IAFunc,
unsigned IAFile,
unsigned IALine,
unsigned IACol,
SMLoc Loc )
virtual

Introduces an inline call site id for use with .cv_loc.

Includes extra information for inline line table generation.

Definition at line 286 of file MCStreamer.cpp.

References getContext(), llvm::MCContext::getCVContext(), llvm::CodeViewContext::recordInlinedCallSiteId(), and llvm::MCContext::reportError().

◆ emitCVLinetableDirective()

void MCStreamer::emitCVLinetableDirective ( unsigned FunctionId,
const MCSymbol * FnStart,
const MCSymbol * FnEnd )
virtual

This implements the CodeView '.cv_linetable' assembler directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 327 of file MCStreamer.cpp.

Referenced by llvm::MCObjectStreamer::emitCVLinetableDirective().

◆ emitCVLocDirective()

void MCStreamer::emitCVLocDirective ( unsigned FunctionId,
unsigned FileNo,
unsigned Line,
unsigned Column,
bool PrologueEnd,
bool IsStmt,
StringRef FileName,
SMLoc Loc )
virtual

This implements the CodeView '.cv_loc' assembler directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 300 of file MCStreamer.cpp.

◆ emitCVStringTableDirective()

virtual void llvm::MCStreamer::emitCVStringTableDirective ( )
inlinevirtual

This implements the CodeView '.cv_stringtable' assembler directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 966 of file MCStreamer.h.

◆ emitDarwinTargetVariantBuildVersion()

virtual void llvm::MCStreamer::emitDarwinTargetVariantBuildVersion ( unsigned Platform,
unsigned Major,
unsigned Minor,
unsigned Update,
VersionTuple SDKVersion )
inlinevirtual

Definition at line 508 of file MCStreamer.h.

Referenced by emitVersionForTarget().

◆ emitDataRegion()

virtual void llvm::MCStreamer::emitDataRegion ( MCDataRegionType Kind)
inlinevirtual

Note in the output the specified region Kind.

Definition at line 495 of file MCStreamer.h.

Referenced by llvm::CSKYConstantPool::emitAll(), and llvm::ConstantPool::emitEntries().

◆ emitDwarfAdvanceLineAddr()

virtual void llvm::MCStreamer::emitDwarfAdvanceLineAddr ( int64_t LineDelta,
const MCSymbol * LastLabel,
const MCSymbol * Label,
unsigned PointerSize )
inlinevirtual

If targets does not support representing debug line section by .loc/.file directives in assembly output, we need to populate debug line section with raw debug line contents.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1111 of file MCStreamer.h.

Referenced by llvm::MCDwarfLineTable::emitOne().

◆ emitDwarfFile0Directive()

void MCStreamer::emitDwarfFile0Directive ( StringRef Directory,
StringRef Filename,
std::optional< MD5::MD5Result > Checksum,
std::optional< StringRef > Source,
unsigned CUID = 0 )
virtual

Specify the "root" file of the compilation, using the ".file 0" extension.

Definition at line 214 of file MCStreamer.cpp.

References getContext(), and llvm::MCContext::setMCLineTableRootFile().

◆ emitDwarfFileDirective()

unsigned llvm::MCStreamer::emitDwarfFileDirective ( unsigned FileNo,
StringRef Directory,
StringRef Filename,
std::optional< MD5::MD5Result > Checksum = std::nullopt,
std::optional< StringRef > Source = std::nullopt,
unsigned CUID = 0 )
inline

Associate a filename with a specified logical file number.

This implements the DWARF2 '.file 4 "foo.c"' assembler directive.

Definition at line 869 of file MCStreamer.h.

References llvm::cantFail(), and tryEmitDwarfFileDirective().

◆ emitDwarfLineEndEntry()

virtual void llvm::MCStreamer::emitDwarfLineEndEntry ( MCSection * Section,
MCSymbol * LastLabel,
MCSymbol * EndLabel = nullptr )
inlinevirtual

Emit the debug line end entry.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1105 of file MCStreamer.h.

Referenced by llvm::MCDwarfLineTable::emitOne().

◆ emitDwarfLineStartLabel()

void MCStreamer::emitDwarfLineStartLabel ( MCSymbol * StartSym)
virtual

Emit the debug line start label.

Definition at line 1141 of file MCStreamer.cpp.

References emitLabel().

Referenced by llvm::MCDwarfLineTableHeader::Emit().

◆ emitDwarfLocDirective()

void MCStreamer::emitDwarfLocDirective ( unsigned FileNo,
unsigned Line,
unsigned Column,
unsigned Flags,
unsigned Isa,
unsigned Discriminator,
StringRef FileName,
StringRef Comment = {} )
virtual

This implements the DWARF2 '.loc fileno lineno ...' assembler directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 237 of file MCStreamer.cpp.

References getContext(), and llvm::MCContext::setCurrentDwarfLoc().

Referenced by llvm::MCObjectStreamer::emitDwarfLocDirective().

◆ emitDwarfLocLabelDirective()

void MCStreamer::emitDwarfLocLabelDirective ( SMLoc Loc,
StringRef Name )
virtual

This implements the '.loc_label Name' directive.

Definition at line 245 of file MCStreamer.cpp.

References llvm::MCDwarfLineTable::endCurrentSeqAndEmitLineStreamLabel(), getContext(), and llvm::MCContext::getMCDwarfLineTable().

◆ emitDwarfUnitLength() [1/2]

MCSymbol * MCStreamer::emitDwarfUnitLength ( const Twine & Prefix,
const Twine & Comment )
virtual

Emit a unit length field.

The actual format, DWARF32 or DWARF64, is chosen according to the settings. Return the end symbol generated inside, the caller needs to emit it.

Definition at line 1126 of file MCStreamer.cpp.

References AddComment(), emitAbsoluteSymbolDiff(), emitLabel(), llvm::dwarf::getDwarfOffsetByteSize(), llvm::Hi, llvm::Lo, and maybeEmitDwarf64Mark().

◆ emitDwarfUnitLength() [2/2]

void MCStreamer::emitDwarfUnitLength ( uint64_t Length,
const Twine & Comment )
virtual

Emit a unit length field.

The actual format, DWARF32 or DWARF64, is chosen according to the settings.

Definition at line 1118 of file MCStreamer.cpp.

References AddComment(), assert(), llvm::dwarf::DW_LENGTH_lo_reserved, llvm::dwarf::DWARF64, emitIntValue(), llvm::dwarf::getDwarfOffsetByteSize(), llvm::Length, and maybeEmitDwarf64Mark().

Referenced by llvm::MCDwarfLineTableHeader::Emit().

◆ emitEHSymAttributes()

void MCStreamer::emitEHSymAttributes ( const MCSymbol * Symbol,
MCSymbol * EHSymbol )
virtual

Definition at line 387 of file MCStreamer.cpp.

◆ emitELFSize()

void MCStreamer::emitELFSize ( MCSymbol * Symbol,
const MCExpr * Value )
virtual

Emit an ELF .size directive.

This corresponds to an assembler statement such as: .size symbol, expression

Reimplemented in llvm::MCELFStreamer, and llvm::MCWasmStreamer.

Definition at line 1307 of file MCStreamer.cpp.

Referenced by llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), and emitSymbolAttribute().

◆ emitELFSymverDirective()

void MCStreamer::emitELFSymverDirective ( const MCSymbol * OriginalSym,
StringRef Name,
bool KeepOriginalSym )
virtual

Emit an ELF .symver directive.

This corresponds to an assembler statement such as: .symver _start, foo@SOME_VERSION

Reimplemented in llvm::MCELFStreamer, and llvm::RecordStreamer.

Definition at line 1308 of file MCStreamer.cpp.

Referenced by emitSymbolAttribute().

◆ emitExplicitComments()

void MCStreamer::emitExplicitComments ( )
virtual

Emit added explicit comments.

Definition at line 122 of file MCStreamer.cpp.

◆ emitFileDirective() [1/2]

void MCStreamer::emitFileDirective ( StringRef Filename)
virtual

Switch to a new logical file.

This is used to implement the '.file "foo.c"' assembler directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1262 of file MCStreamer.cpp.

◆ emitFileDirective() [2/2]

void MCStreamer::emitFileDirective ( StringRef Filename,
StringRef CompilerVersion,
StringRef TimeStamp,
StringRef Description )
virtual

Emit ".file assembler diretive with additioal info.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1263 of file MCStreamer.cpp.

◆ emitFill() [1/3]

void MCStreamer::emitFill ( const MCExpr & NumBytes,
uint64_t FillValue,
SMLoc Loc = SMLoc() )
virtual

Emit Size bytes worth of the value specified by FillValue.

This is used to implement assembler directives such as .space or .skip.

Parameters
NumBytes- The number of bytes to emit.
FillValue- The value to use when filling bytes.
Loc- The location of the expression for error reporting.

Reimplemented in llvm::CSKYELFStreamer, llvm::MCObjectStreamer, and llvm::RISCVELFStreamer.

Definition at line 1338 of file MCStreamer.cpp.

◆ emitFill() [2/3]

void MCStreamer::emitFill ( const MCExpr & NumValues,
int64_t Size,
int64_t Expr,
SMLoc Loc = SMLoc() )
virtual

Emit NumValues copies of Size bytes.

Each Size bytes is taken from the lowest order 4 bytes of Expr expression.

This is used to implement assembler directives such as .fill.

Parameters
NumValues- The number of copies of Size bytes to emit.
Size- The size (in bytes) of each repeated value.
Expr- The expression from which Size bytes are used.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1339 of file MCStreamer.cpp.

References Size.

◆ emitFill() [3/3]

void MCStreamer::emitFill ( uint64_t NumBytes,
uint8_t FillValue )

Emit NumBytes bytes worth of the value specified by FillValue.

This implements directives such as '.space'.

Definition at line 195 of file MCStreamer.cpp.

References llvm::MCConstantExpr::create(), emitFill(), and getContext().

Referenced by emitFill(), emitGenDwarfRanges(), and emitZeros().

◆ emitGNUAttribute()

virtual void llvm::MCStreamer::emitGNUAttribute ( unsigned Tag,
unsigned Value )
inlinevirtual

Emit a .gnu_attribute directive.

Reimplemented in llvm::MCELFStreamer.

Definition at line 670 of file MCStreamer.h.

References llvm::Tag.

◆ emitIdent()

virtual void llvm::MCStreamer::emitIdent ( StringRef IdentString)
inlinevirtual

Emit the "identifiers" directive.

This implements the '.ident "version foo"' assembler directive.

Reimplemented in llvm::MCELFStreamer, llvm::MCWasmStreamer, and llvm::MCWinCOFFStreamer.

Definition at line 865 of file MCStreamer.h.

◆ emitInstruction()

◆ emitInt16()

◆ emitInt32()

◆ emitInt64()

void llvm::MCStreamer::emitInt64 ( uint64_t Value)
inline

◆ emitInt8()

◆ emitIntValue() [1/2]

◆ emitIntValue() [2/2]

◆ emitIntValueInHex()

virtual void llvm::MCStreamer::emitIntValueInHex ( uint64_t Value,
unsigned Size )
inlinevirtual

Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers & prints in Hex format for certain modes.

Definition at line 744 of file MCStreamer.h.

References emitIntValue(), and Size.

◆ emitIntValueInHexWithPadding()

virtual void llvm::MCStreamer::emitIntValueInHexWithPadding ( uint64_t Value,
unsigned Size )
inlinevirtual

Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers & prints in Hex format for certain modes, pads the field with leading zeros to Size width.

Definition at line 756 of file MCStreamer.h.

References emitIntValue(), and Size.

◆ emitLabel()

void MCStreamer::emitLabel ( MCSymbol * Symbol,
SMLoc Loc = SMLoc() )
virtual

Emit a label for Symbol into the current section.

This corresponds to an assembler statement such as: foo:

Parameters
Symbol- The symbol to emit. A given symbol should only be emitted as a label once, and symbols emitted as a label should never be used in an assignment.

Reimplemented in llvm::MCELFStreamer, llvm::MCObjectStreamer, llvm::MCWasmStreamer, llvm::MCWinCOFFStreamer, llvm::MipsELFStreamer, llvm::PPCELFStreamer, llvm::RecordStreamer, and llvm::SystemZHLASMAsmStreamer.

Definition at line 395 of file MCStreamer.cpp.

References assert(), llvm::MCTargetStreamer::emitLabel(), getContext(), getCurrentSectionOnly(), getTargetStreamer(), and llvm::MCContext::reportError().

Referenced by ARM64EmitUnwindInfoForSegment(), ARMEmitUnwindInfo(), changeSection(), llvm::MCDwarfDwoLineTable::Emit(), llvm::MCDwarfLineTableHeader::Emit(), llvm::MCGenDwarfInfo::Emit(), llvm::CSKYConstantPool::emitAll(), emitAuthenticatedPointer(), llvm::MCDwarfLineTable::emitCU(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), emitDirectiveRelocJalr(), emitDwarfLineStartLabel(), emitDwarfUnitLength(), llvm::ConstantPool::emitEntries(), EmitGenDwarfInfo(), emitGenDwarfRanges(), llvm::MCObjectStreamer::emitLabel(), llvm::RecordStreamer::emitLabel(), llvm::SystemZHLASMAsmStreamer::emitLabel(), llvm::MCObjectStreamer::emitLabelAtPos(), llvm::mcdwarf::emitListsTableHeaderStart(), llvm::XtensaTargetELFStreamer::emitLiteral(), llvm::TargetLoweringObjectFileCOFF::emitModuleMetadata(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), llvm::TargetLoweringObjectFileMachO::emitModuleMetadata(), emitNonLazySymbolPointer(), emitNonLazySymbolPointer(), llvm::MCDwarfLineTable::emitOne(), llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), emitPseudoProbe(), EmitUnwindInfo(), llvm::MCDwarfLineTable::endCurrentSeqAndEmitLineStreamLabel(), endSection(), llvm::MCAsmInfo::getExprForFDESymbol(), llvm::AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(), llvm::AArch64_MachoTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::AArch64_MachoTargetObjectFile::getTTypeGlobalReference(), llvm::TargetLoweringObjectFile::getTTypeReference(), llvm::MCGenDwarfLabelEntry::Make(), llvm::MCDwarfLineEntry::make(), llvm::FaultMaps::serializeToFaultMapSection(), llvm::StackMaps::serializeToStackMapSection(), and smallData().

◆ emitLineTableLabel()

◆ emitLinkerOptions()

virtual void llvm::MCStreamer::emitLinkerOptions ( ArrayRef< std::string > Kind)
inlinevirtual

Emit the given list Options of strings as linker options into the output.

Definition at line 492 of file MCStreamer.h.

Referenced by llvm::TargetLoweringObjectFileMachO::emitLinkerDirectives().

◆ emitLocalCommonSymbol()

void MCStreamer::emitLocalCommonSymbol ( MCSymbol * Symbol,
uint64_t Size,
Align ByteAlignment )
virtual

Emit a local common (.lcomm) symbol.

Parameters
Symbol- The common symbol to emit.
Size- The size of the common symbol.
ByteAlignment- The alignment of the common symbol in bytes.

Reimplemented in llvm::MCELFStreamer, llvm::MCWasmStreamer, and llvm::MCWinCOFFStreamer.

Definition at line 1310 of file MCStreamer.cpp.

References Size.

Referenced by emitCommonSymbol().

◆ emitLOHDirective()

virtual void llvm::MCStreamer::emitLOHDirective ( MCLOHType Kind,
const MCLOHArgs & Args )
inlinevirtual

Emit a Linker Optimization Hint (LOH) directive.

Parameters
Args- Arguments of the LOH.

Definition at line 667 of file MCStreamer.h.

◆ emitNops()

void llvm::MCStreamer::emitNops ( int64_t NumBytes,
int64_t ControlledNopLength,
llvm::SMLoc Loc,
const MCSubtargetInfo & STI )
virtual

Reimplemented in llvm::MCObjectStreamer.

Definition at line 200 of file MCStreamer.cpp.

◆ emitPseudoProbe()

void MCStreamer::emitPseudoProbe ( uint64_t Guid,
uint64_t Index,
uint64_t Type,
uint64_t Attr,
uint64_t Discriminator,
const MCPseudoProbeInlineStack & InlineStack,
MCSymbol * FnSym )
virtual

Emit the a pseudo probe into the current section.

Definition at line 1202 of file MCStreamer.cpp.

References emitLabel(), getContext(), and llvm::Guid.

◆ emitRawComment()

void MCStreamer::emitRawComment ( const Twine & T,
bool TabPrefix = true )
virtual

Print T and prefix it with the comment string (normally #) and optionally a tab.

This prints the comment immediately, not at the end of the current line. It is basically a safe version of EmitRawText: since it only prints comments, the object streamer ignores it instead of asserting.

Definition at line 119 of file MCStreamer.cpp.

References T.

Referenced by emitVGPRBlockComment().

◆ emitRawText()

void MCStreamer::emitRawText ( const Twine & String)

If this file is backed by a assembly streamer, this dumps the specified string in the output .s file.

This capability is indicated by the hasRawTextSupport() predicate. By default this aborts.

Definition at line 1088 of file MCStreamer.cpp.

References emitRawTextImpl(), and T.

Referenced by llvm::NVPTXTargetStreamer::closeLastSection(), llvm::SystemZTargetHLASMStreamer::emitExtern(), and llvm::NVPTXTargetStreamer::outputDwarfFileDirectives().

◆ emitRawTextImpl()

void MCStreamer::emitRawTextImpl ( StringRef String)
protectedvirtual

EmitRawText - If this file is backed by an assembly streamer, this dumps the specified string in the output .s file.

This capability is indicated by the hasRawTextSupport() predicate.

Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::SystemZHLASMAsmStreamer.

Definition at line 1079 of file MCStreamer.cpp.

References llvm::report_fatal_error(), and llvm::String.

Referenced by emitRawText().

◆ emitRelocDirective()

virtual void llvm::MCStreamer::emitRelocDirective ( const MCExpr & Offset,
StringRef Name,
const MCExpr * Expr,
SMLoc Loc = {} )
inlinevirtual

Record a relocation described by the .reloc directive.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1061 of file MCStreamer.h.

References llvm::Offset.

Referenced by emitDirectiveRelocJalr().

◆ emitSLEB128IntValue()

unsigned MCStreamer::emitSLEB128IntValue ( int64_t Value)

Special case of EmitSLEB128Value that avoids the client having to pass in a MCExpr for constant integers.

EmitSLEB128IntValue - Special case of EmitSLEB128Value that avoids the client having to pass in a MCExpr for constant integers.

Definition at line 170 of file MCStreamer.cpp.

References emitBytes(), llvm::encodeSLEB128(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::raw_svector_ostream::str().

Referenced by llvm::MCPseudoProbe::emit(), and llvm::MCObjectStreamer::emitSLEB128Value().

◆ emitSLEB128Value()

void MCStreamer::emitSLEB128Value ( const MCExpr * Value)
virtual

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1337 of file MCStreamer.cpp.

◆ emitSubsectionsViaSymbols()

void MCStreamer::emitSubsectionsViaSymbols ( )
virtual

Emit a .subsection_via_symbols directive.

Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::RecordStreamer.

Definition at line 1251 of file MCStreamer.cpp.

References llvm_unreachable.

◆ emitSymbolAttribute()

◆ emitSymbolDesc()

void MCStreamer::emitSymbolDesc ( MCSymbol * Symbol,
unsigned DescValue )
virtual

Set the DescValue for the Symbol.

Parameters
Symbol- The symbol to have its n_desc field set.
DescValue- The value to set into the n_desc field.

Reimplemented in llvm::MCWinCOFFStreamer.

Definition at line 1255 of file MCStreamer.cpp.

Referenced by emitSymbolAttribute().

◆ emitSymbolValue()

void MCStreamer::emitSymbolValue ( const MCSymbol * Sym,
unsigned Size,
bool IsSectionRelative = false )

◆ emitSyntaxDirective()

void MCStreamer::emitSyntaxDirective ( )
virtual

Definition at line 879 of file MCStreamer.cpp.

◆ emitTBSSSymbol()

void MCStreamer::emitTBSSSymbol ( MCSection * Section,
MCSymbol * Symbol,
uint64_t Size,
Align ByteAlignment = Align(1) )
virtual

Emit a thread local bss (.tbss) symbol.

Parameters
Section- The thread local common section.
Symbol- The thread local common symbol to emit.
Size- The size of the symbol.
ByteAlignment- The alignment of the thread local common symbol.

Definition at line 1314 of file MCStreamer.cpp.

References Size.

Referenced by emitCommonSymbol().

◆ emitULEB128IntValue()

◆ emitULEB128Value()

void MCStreamer::emitULEB128Value ( const MCExpr * Value)
virtual

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1336 of file MCStreamer.cpp.

Referenced by emitAbsoluteSymbolDiffAsULEB128(), and emitGenDwarfRanges().

◆ emitValue()

◆ emitValueImpl()

void MCStreamer::emitValueImpl ( const MCExpr * Value,
unsigned Size,
SMLoc Loc = SMLoc() )
virtual

Emit the expression Value into the output as a native integer of the given Size bytes.

This is used to implement assembler directives such as .word, .quad, etc.

Parameters
Value- The value to emit.
Size- The size of the integer (in bytes) to emit. This must match a native machine width.
Loc- The location of the expression for error reporting.

Reimplemented in llvm::CSKYELFStreamer, llvm::MCObjectStreamer, llvm::MipsELFStreamer, llvm::RISCVELFStreamer, and llvm::SystemZHLASMAsmStreamer.

Definition at line 1333 of file MCStreamer.cpp.

References Size, and visitUsedExpr().

Referenced by emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), emitSymbolValue(), emitValue(), and llvm::MCObjectStreamer::emitValueImpl().

◆ emitValueToAlignment()

void MCStreamer::emitValueToAlignment ( Align Alignment,
int64_t Fill = 0,
uint8_t FillLen = 1,
unsigned MaxBytesToEmit = 0 )
virtual

Emit some number of copies of Value until the byte alignment ByteAlignment is reached.

If the number of bytes need to emit for the alignment is not a multiple of ValueSize, then the contents of the emitted fill bytes is undefined.

This used to implement the .align assembler directive.

Parameters
Alignment- The alignment to reach.
Fill- The value to use when filling bytes.
FillLen- The size of the integer (in bytes) to emit for Value. This must match a native machine width.
MaxBytesToEmit- The maximum numbers of bytes to emit, or 0. If the alignment cannot be reached in this many bytes, no bytes are emitted.

Reimplemented in llvm::MCObjectStreamer, and llvm::SystemZHLASMAsmStreamer.

Definition at line 1341 of file MCStreamer.cpp.

Referenced by ARM64EmitRuntimeFunction(), ARM64EmitUnwindInfoForSegment(), ARMEmitRuntimeFunction(), ARMEmitUnwindInfo(), llvm::AMDGPUTargetELFStreamer::EmitCodeEnd(), llvm::ConstantPool::emitEntries(), llvm::RISCVTargetStreamer::emitNoteGnuPropertySection(), llvm::AArch64TargetStreamer::emitNoteSection(), llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), EmitRuntimeFunction(), and EmitUnwindInfo().

◆ emitValueToOffset()

void MCStreamer::emitValueToOffset ( const MCExpr * Offset,
unsigned char Value,
SMLoc Loc )
virtual

Emit some number of copies of Value until the byte offset Offset is reached.

This is used to implement assembler directives such as .org.

Parameters
Offset- The offset to reach. This may be an expression, but the expression must be associated with the current section.
Value- The value to use when filling bytes.

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1344 of file MCStreamer.cpp.

References llvm::Offset.

Referenced by llvm::MCParserUtils::parseAssignmentExpression().

◆ emitVersionForTarget()

◆ emitVersionMin()

virtual void llvm::MCStreamer::emitVersionMin ( MCVersionMinType Type,
unsigned Major,
unsigned Minor,
unsigned Update,
VersionTuple SDKVersion )
inlinevirtual

Specify the Mach-O minimum deployment target version.

Definition at line 498 of file MCStreamer.h.

Referenced by emitVersionForTarget().

◆ emitWeakReference()

void MCStreamer::emitWeakReference ( MCSymbol * Alias,
const MCSymbol * Symbol )
virtual

Emit an weak reference from Alias to Symbol.

This corresponds to an assembler statement such as: .weakref alias, symbol

Parameters
Alias- The alias that is being created.
Symbol- The symbol being aliased.

Reimplemented in llvm::MCELFStreamer, llvm::MCObjectStreamer, and llvm::MCWinCOFFStreamer.

Definition at line 1330 of file MCStreamer.cpp.

◆ emitWinCFIAllocStack()

void MCStreamer::emitWinCFIAllocStack ( unsigned Size,
SMLoc Loc = SMLoc() )
virtual

◆ emitWinCFIBeginEpilogue()

◆ emitWinCFIEndChained()

void MCStreamer::emitWinCFIEndChained ( SMLoc Loc = SMLoc())
virtual

◆ emitWinCFIEndEpilogue()

◆ emitWinCFIEndProc()

◆ emitWinCFIEndProlog()

void MCStreamer::emitWinCFIEndProlog ( SMLoc Loc = SMLoc())
virtual

◆ emitWinCFIFuncletOrFuncEnd()

void MCStreamer::emitWinCFIFuncletOrFuncEnd ( SMLoc Loc = SMLoc())
virtual

This is used on platforms, such as Windows on ARM64, that require function or funclet sizes to be emitted in .xdata before the End marker is emitted for the frame.

We cannot use the End marker, as it is not set at the point of emitting .xdata, in order to indicate that the frame is active.

Definition at line 766 of file MCStreamer.cpp.

References llvm::WinEH::FrameInfo::ChainedParent, emitCFILabel(), EnsureValidWinFrameInfo(), llvm::WinEH::FrameInfo::FuncletOrFuncEnd, getContext(), and llvm::MCContext::reportError().

◆ emitWinCFIPushFrame()

◆ emitWinCFIPushReg()

void MCStreamer::emitWinCFIPushReg ( MCRegister Register,
SMLoc Loc = SMLoc() )
virtual

◆ emitWinCFISaveReg()

◆ emitWinCFISaveXMM()

◆ emitWinCFISetFrame()

◆ emitWinCFIStartChained()

void MCStreamer::emitWinCFIStartChained ( SMLoc Loc = SMLoc())
virtual

Definition at line 777 of file MCStreamer.cpp.

References EnsureValidWinFrameInfo().

◆ emitWinCFIStartProc()

void MCStreamer::emitWinCFIStartProc ( const MCSymbol * Symbol,
SMLoc Loc = SMLoc() )
virtual

◆ emitWinCFIUnwindV2Start()

void MCStreamer::emitWinCFIUnwindV2Start ( SMLoc Loc = SMLoc())
virtual

◆ emitWinCFIUnwindVersion()

◆ emitWindowsUnwindTables() [1/2]

void MCStreamer::emitWindowsUnwindTables ( )
protectedvirtual

Definition at line 1093 of file MCStreamer.cpp.

Referenced by emitWinCFIEndProc().

◆ emitWindowsUnwindTables() [2/2]

void MCStreamer::emitWindowsUnwindTables ( WinEH::FrameInfo * Frame)
protectedvirtual

Definition at line 1095 of file MCStreamer.cpp.

◆ emitWinEHHandler()

◆ emitWinEHHandlerData()

void MCStreamer::emitWinEHHandlerData ( SMLoc Loc = SMLoc())
virtual

◆ emitXCOFFCInfoSym()

void MCStreamer::emitXCOFFCInfoSym ( StringRef Name,
StringRef Metadata )
virtual

Emit a C_INFO symbol with XCOFF embedded metadata to the .info section.

Parameters
Name- The embedded metadata name
Metadata- The embedded metadata

Reimplemented in llvm::MCXCOFFStreamer.

Definition at line 1302 of file MCStreamer.cpp.

References llvm_unreachable.

Referenced by emitSymbolAttribute().

◆ emitXCOFFExceptDirective()

void MCStreamer::emitXCOFFExceptDirective ( const MCSymbol * Symbol,
const MCSymbol * Trap,
unsigned Lang,
unsigned Reason,
unsigned FunctionSize,
bool hasDebug )
virtual

Emit an XCOFF .except directive which adds information about a trap instruction to the object file exception section.

Parameters
Symbol- The function containing the trap.
Lang- The language code for the exception entry.
Reason- The reason code for the exception entry.

Reimplemented in llvm::MCXCOFFStreamer.

Definition at line 1293 of file MCStreamer.cpp.

References llvm::report_fatal_error(), and Trap.

Referenced by emitSymbolAttribute().

◆ emitXCOFFLocalCommonSymbol()

void MCStreamer::emitXCOFFLocalCommonSymbol ( MCSymbol * LabelSym,
uint64_t Size,
MCSymbol * CsectSym,
Align Alignment )
virtual

Emits an lcomm directive with XCOFF csect information.

Parameters
LabelSym- Label on the block of storage.
Size- The size of the block of storage.
CsectSym- Csect name for the block of storage.
Alignment- The alignment of the symbol in bytes.

Reimplemented in llvm::MCXCOFFStreamer.

Definition at line 1273 of file MCStreamer.cpp.

References llvm_unreachable, and Size.

Referenced by emitSymbolAttribute().

◆ emitXCOFFRefDirective()

void MCStreamer::emitXCOFFRefDirective ( const MCSymbol * Symbol)
virtual

Emit a XCOFF .ref directive which creates R_REF type entry in the relocation table for one or more symbols.

Parameters
Sym- The symbol on the .ref directive.

Reimplemented in llvm::MCXCOFFStreamer.

Definition at line 1289 of file MCStreamer.cpp.

References llvm_unreachable.

Referenced by emitSymbolAttribute().

◆ emitXCOFFRenameDirective()

void MCStreamer::emitXCOFFRenameDirective ( const MCSymbol * Name,
StringRef Rename )
virtual

Emit a XCOFF .rename directive which creates a synonym for an illegal or undesirable name.

Parameters
Name- The name used internally in the assembly for references to the symbol.
Rename- The value to which the Name parameter is changed at the end of assembly.

Reimplemented in llvm::MCXCOFFStreamer.

Definition at line 1286 of file MCStreamer.cpp.

Referenced by emitSymbolAttribute().

◆ emitXCOFFSymbolLinkageWithVisibility()

void MCStreamer::emitXCOFFSymbolLinkageWithVisibility ( MCSymbol * Symbol,
MCSymbolAttr Linkage,
MCSymbolAttr Visibility )
virtual

Emit a symbol's linkage and visibility with a linkage directive for XCOFF.

Parameters
Symbol- The symbol to emit.
Linkage- The linkage of the symbol to emit.
Visibility- The visibility of the symbol to emit or MCSA_Invalid if the symbol does not have an explicit visibility.

Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::MCXCOFFStreamer.

Definition at line 1279 of file MCStreamer.cpp.

References llvm_unreachable.

Referenced by emitSymbolAttribute().

◆ emitZerofill()

void MCStreamer::emitZerofill ( MCSection * Section,
MCSymbol * Symbol = nullptr,
uint64_t Size = 0,
Align ByteAlignment = Align(1),
SMLoc Loc = SMLoc() )
virtual

Emit the zerofill section and an optional symbol.

Parameters
Section- The zerofill section to create and or to put the symbol
Symbol- The zerofill symbol to emit, if non-NULL.
Size- The size of the zerofill symbol.
ByteAlignment- The alignment of the zerofill symbol.

Reimplemented in llvm::RecordStreamer, and llvm::SystemZHLASMAsmStreamer.

Definition at line 1312 of file MCStreamer.cpp.

Referenced by emitCommonSymbol().

◆ emitZeros()

void MCStreamer::emitZeros ( uint64_t NumBytes)

Emit NumBytes worth of zeros.

The implementation in this class just redirects to emitFill.

This function properly handles data in virtual sections.

Definition at line 204 of file MCStreamer.cpp.

References emitFill().

Referenced by llvm::AsmPrinter::XRayFunctionEntry::emit(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MCXCOFFStreamer::emitCommonSymbol(), llvm::MCWinCOFFStreamer::emitLocalCommonSymbol(), and llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol().

◆ endCOFFSymbolDef()

void MCStreamer::endCOFFSymbolDef ( )
virtual

Marks the end of the symbol definition.

Reimplemented in llvm::CFIFunctionFrameStreamer, llvm::MCWinCOFFStreamer, and llvm::RecordStreamer.

Definition at line 1259 of file MCStreamer.cpp.

References llvm_unreachable.

Referenced by emitSymbolAttribute().

◆ endSection()

◆ EnsureValidWinFrameInfo()

◆ finish()

void MCStreamer::finish ( SMLoc EndLoc = SMLoc())

Finish emission of machine code.

Definition at line 1097 of file MCStreamer.cpp.

References llvm::MCTargetStreamer::finish(), finishImpl(), getContext(), getTargetStreamer(), and llvm::MCContext::reportError().

◆ finishImpl()

void MCStreamer::finishImpl ( )
virtual

Streamer specific finalization.

Reimplemented in llvm::MCELFStreamer, llvm::MCObjectStreamer, llvm::MCWasmStreamer, and llvm::MCWinCOFFStreamer.

Definition at line 1346 of file MCStreamer.cpp.

Referenced by finish().

◆ generateCompactUnwindEncodings()

void MCStreamer::generateCompactUnwindEncodings ( MCAsmBackend * MAB)

◆ getAllowAutoPadding()

bool llvm::MCStreamer::getAllowAutoPadding ( ) const
inline

Definition at line 329 of file MCStreamer.h.

Referenced by llvm::X86_MC::emitInstruction().

◆ getAssemblerPtr()

virtual MCAssembler * llvm::MCStreamer::getAssemblerPtr ( )
inlinevirtual

Reimplemented in llvm::MCObjectStreamer.

Definition at line 319 of file MCStreamer.h.

Referenced by switchSection().

◆ getAssociatedPDataSection()

MCSection * MCStreamer::getAssociatedPDataSection ( const MCSection * TextSec)

Get the .pdata section used for the given section.

Typically the given section is either the main .text section or some other COMDAT .text section, but it may be any section containing code.

Definition at line 867 of file MCStreamer.cpp.

References getContext(), and getWinCFISection().

Referenced by llvm::Win64EH::ARM64UnwindEmitter::Emit(), llvm::Win64EH::ARMUnwindEmitter::Emit(), and llvm::Win64EH::UnwindEmitter::Emit().

◆ getAssociatedXDataSection()

◆ getCommentOS()

raw_ostream & MCStreamer::getCommentOS ( )
virtual

Return a raw_ostream that comments can be written to.

Unlike AddComment, you are required to terminate comments with
if you use this method.

Definition at line 109 of file MCStreamer.cpp.

References llvm::nulls().

◆ getContext()

MCContext & llvm::MCStreamer::getContext ( ) const
inline

Definition at line 314 of file MCStreamer.h.

Referenced by llvm::AssemblerConstantPools::addEntry(), llvm::CSKYConstantPool::addEntry(), llvm::CodeViewContext::addFile(), ARM64EmitRuntimeFunction(), ARM64EmitUnwindInfo(), ARM64EmitUnwindInfoForSegment(), ARMEmitRuntimeFunction(), ARMEmitUnwindInfo(), buildSymbolDiff(), buildSymbolDiff(), llvm::MCObjectStreamer::changeSection(), changeSection(), llvm::NVPTXTargetStreamer::changeSection(), llvm::SystemZHLASMAsmStreamer::changeSection(), checkARM64Instructions(), checkARMInstructions(), checkCVLocSection(), createAsmTargetStreamer(), createObjectTargetStreamer(), llvm::MCDwarfFrameEmitter::Emit(), llvm::MCDwarfLineAddr::Emit(), llvm::MCDwarfLineTableHeader::Emit(), llvm::MCGenDwarfInfo::Emit(), llvm::MCDwarfLineTable::emit(), llvm::MCPseudoProbeSections::emit(), llvm::MCPseudoProbeTable::emit(), llvm::MCSFrameEmitter::emit(), EmitAbsDifference(), llvm::CSKYConstantPool::emitAll(), llvm::AMDGPUTargetELFStreamer::EmitAMDGPUSymbolType(), llvm::MipsELFStreamer::emitCFIEndProcImpl(), llvm::MCObjectStreamer::emitCFILabel(), llvm::MipsELFStreamer::emitCFILabel(), emitCFILabelDirective(), emitCFIStartProc(), llvm::MipsELFStreamer::emitCFIStartProcImpl(), llvm::MCWinCOFFStreamer::emitCOFFImgRel32(), llvm::MCWinCOFFStreamer::emitCOFFSafeSEH(), llvm::MCWinCOFFStreamer::emitCOFFSecNumber(), llvm::MCWinCOFFStreamer::emitCOFFSecOffset(), llvm::MCWinCOFFStreamer::emitCOFFSecRel32(), llvm::MCWinCOFFStreamer::emitCOFFSectionIndex(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MCWinCOFFStreamer::emitCommonSymbol(), llvm::MCObjectStreamer::emitCVDefRangeDirective(), llvm::MCObjectStreamer::emitCVFileChecksumOffsetDirective(), llvm::MCObjectStreamer::emitCVFileChecksumsDirective(), emitCVFileDirective(), emitCVFuncIdDirective(), llvm::MCObjectStreamer::emitCVInlineLinetableDirective(), emitCVInlineSiteIdDirective(), llvm::MCObjectStreamer::emitCVLinetableDirective(), llvm::MCObjectStreamer::emitCVLocDirective(), llvm::MCObjectStreamer::emitCVStringTableDirective(), llvm::MipsTargetAsmStreamer::emitDTPRel32Value(), llvm::MipsTargetAsmStreamer::emitDTPRel64Value(), llvm::MCObjectStreamer::emitDwarfAdvanceLineAddr(), emitDwarfFile0Directive(), llvm::MCObjectStreamer::emitDwarfLineEndEntry(), emitDwarfLocDirective(), emitDwarfLocLabelDirective(), emitFDESymbol(), llvm::CodeViewContext::emitFileChecksumOffset(), llvm::CodeViewContext::emitFileChecksums(), llvm::MCObjectStreamer::emitFill(), emitFill(), llvm::MCObjectStreamer::emitFrames(), llvm::AMDGPUAsmPrinter::emitFunctionBodyEnd(), EmitGenDwarfAbbrev(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), emitGenDwarfRanges(), llvm::MipsTargetAsmStreamer::emitGPRel32Value(), llvm::MipsTargetAsmStreamer::emitGPRel64Value(), llvm::SystemZHLASMAsmStreamer::emitHLASMValueImpl(), llvm::MipsELFStreamer::emitInstruction(), emitLabel(), llvm::CodeViewContext::emitLineTableForFunction(), emitLineTableLabel(), llvm::mcdwarf::emitListsTableHeaderStart(), llvm::XtensaTargetELFStreamer::emitLiteral(), llvm::MCWinCOFFStreamer::emitLocalCommonSymbol(), emitNonLazySymbolPointer(), emitNonLazySymbolPointer(), llvm::RISCVTargetStreamer::emitNoteGnuPropertySection(), llvm::AArch64TargetStreamer::emitNoteSection(), llvm::MCDwarfLineTable::emitOne(), EmitPersonality(), emitPseudoProbe(), llvm::MCDwarfLineStr::emitRef(), llvm::MCObjectStreamer::emitRelocDirective(), EmitRuntimeFunction(), llvm::MCDwarfLineStr::emitSection(), llvm::CodeViewContext::emitStringTable(), llvm::MCELFStreamer::emitSymbolAttribute(), EmitSymbolRefWithOfs(), EmitSymbolRefWithOfs(), emitSymbolValue(), llvm::MipsTargetAsmStreamer::emitTPRel32Value(), llvm::MipsTargetAsmStreamer::emitTPRel64Value(), EmitUnwindInfo(), llvm::AVRMCELFStreamer::emitValueForModiferKind(), llvm::MCObjectStreamer::emitValueImpl(), llvm::MCELFStreamer::emitWeakReference(), llvm::MCWinCOFFStreamer::emitWeakReference(), emitWinCFIAllocStack(), emitWinCFIBeginEpilogue(), emitWinCFIEndChained(), emitWinCFIEndEpilogue(), emitWinCFIEndProc(), emitWinCFIFuncletOrFuncEnd(), emitWinCFIPushFrame(), emitWinCFISaveReg(), emitWinCFISaveXMM(), emitWinCFISetFrame(), emitWinCFIStartProc(), emitWinCFIUnwindV2Start(), emitWinCFIUnwindVersion(), emitWinEHHandler(), emitWinEHHandlerData(), llvm::MCXCOFFStreamer::emitXCOFFRefDirective(), llvm::MCDwarfLineTable::endCurrentSeqAndEmitLineStreamLabel(), EnsureValidWinFrameInfo(), finish(), llvm::MCObjectStreamer::finishImpl(), llvm::MCWinCOFFStreamer::finishImpl(), llvm::RecordStreamer::flushSymverDirectives(), forceExpAbs(), getAssociatedPDataSection(), getAssociatedXDataSection(), getDataAlignmentFactor(), getDwarfLineTableSymbol(), llvm::MCAsmInfo::getExprForFDESymbol(), llvm::RISCVMCAsmInfo::getExprForFDESymbol(), llvm::SparcELFMCAsmInfo::getExprForFDESymbol(), llvm::AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(), llvm::SparcELFMCAsmInfo::getExprForPersonalitySymbol(), llvm::X86_64MCAsmInfoDarwin::getExprForPersonalitySymbol(), getSizeForEncoding(), GetSubDivExpr(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), llvm::MCELFStreamer::initSections(), initSections(), llvm::MCWinCOFFStreamer::initSections(), llvm::MCGenDwarfLabelEntry::Make(), llvm::MCDwarfLineEntry::make(), llvm::MSP430TargetELFStreamer::MSP430TargetELFStreamer(), llvm::MCObjectStreamer::reset(), smallData(), llvm::XtensaTargetELFStreamer::startLiteralSection(), switchSection(), tryEmitDwarfFileDirective(), and llvm::write().

◆ getCurFragSize()

size_t llvm::MCStreamer::getCurFragSize ( ) const
inline

Definition at line 441 of file MCStreamer.h.

References getCurrentFragment().

Referenced by llvm::MCObjectStreamer::addFixup().

◆ getCurrentFragment()

◆ getCurrentSection()

MCSectionSubPair llvm::MCStreamer::getCurrentSection ( ) const
inline

Return the current section that the streamer is emitting code to.

Definition at line 416 of file MCStreamer.h.

Referenced by llvm::MCELFStreamer::emitCommonSymbol(), getCurrentFragment(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), and pushSection().

◆ getCurrentSectionOnly()

◆ getCurrentWinEpilog()

WinEH::FrameInfo::Epilog * llvm::MCStreamer::getCurrentWinEpilog ( ) const
inline

Definition at line 351 of file MCStreamer.h.

References CurrentWinEpilog.

◆ getCurrentWinFrameInfo()

WinEH::FrameInfo * llvm::MCStreamer::getCurrentWinFrameInfo ( )
inlineprotected

Definition at line 280 of file MCStreamer.h.

◆ getDwarfFrameInfos()

ArrayRef< MCDwarfFrameInfo > MCStreamer::getDwarfFrameInfos ( ) const

Definition at line 115 of file MCStreamer.cpp.

Referenced by llvm::MCDwarfFrameEmitter::Emit(), and llvm::MCSFrameEmitter::emit().

◆ getDwarfLineTableSymbol()

MCSymbol * MCStreamer::getDwarfLineTableSymbol ( unsigned CUID)
virtual

◆ getMnemonic()

virtual StringRef llvm::MCStreamer::getMnemonic ( const MCInst & MI) const
inlinevirtual

Returns the mnemonic for MI, if the streamer has access to a instruction printer and returns an empty string otherwise.

Definition at line 471 of file MCStreamer.h.

References MI.

Referenced by getMIMnemonic().

◆ getNumFrameInfos()

unsigned MCStreamer::getNumFrameInfos ( )

◆ getNumWinFrameInfos()

unsigned llvm::MCStreamer::getNumWinFrameInfos ( )
inline

Definition at line 346 of file MCStreamer.h.

◆ getPreviousSection()

MCSectionSubPair llvm::MCStreamer::getPreviousSection ( ) const
inline

Return the previous section that the streamer is emitting code to.

Definition at line 426 of file MCStreamer.h.

Referenced by llvm::RISCVELFStreamer::changeSection(), and pushSection().

◆ getStartTokLoc()

SMLoc llvm::MCStreamer::getStartTokLoc ( ) const
inline

◆ getTargetStreamer()

◆ getUseAssemblerInfoForParsing()

bool llvm::MCStreamer::getUseAssemblerInfoForParsing ( )
inline

Definition at line 322 of file MCStreamer.h.

Referenced by llvm::MCObjectStreamer::getAssemblerPtr().

◆ getWinFrameInfos()

ArrayRef< std::unique_ptr< WinEH::FrameInfo > > llvm::MCStreamer::getWinFrameInfos ( ) const
inline

◆ hasRawTextSupport()

virtual bool llvm::MCStreamer::hasRawTextSupport ( ) const
inlinevirtual

Return true if this asm streamer supports emitting unformatted text to the .s file with EmitRawText.

Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::SystemZHLASMAsmStreamer.

Definition at line 368 of file MCStreamer.h.

◆ hasUnfinishedDwarfFrameInfo()

bool MCStreamer::hasUnfinishedDwarfFrameInfo ( )

Definition at line 261 of file MCStreamer.cpp.

Referenced by llvm::CFIFunctionFrameStreamer::emitInstruction().

◆ initSections()

void MCStreamer::initSections ( bool NoExecStack,
const MCSubtargetInfo & STI )
virtual

Create the default sections and set the initial one.

Reimplemented in llvm::MCELFStreamer, and llvm::MCWinCOFFStreamer.

Definition at line 391 of file MCStreamer.cpp.

References getContext(), and switchSectionNoPrint().

◆ isInEpilogCFI()

bool llvm::MCStreamer::isInEpilogCFI ( ) const
inline

Definition at line 355 of file MCStreamer.h.

References CurrentWinEpilog.

◆ isIntegratedAssemblerRequired()

virtual bool llvm::MCStreamer::isIntegratedAssemblerRequired ( ) const
inlinevirtual

Is the integrated assembler required for this streamer to function correctly?

Reimplemented in llvm::MCObjectStreamer.

Definition at line 372 of file MCStreamer.h.

◆ isObj()

bool llvm::MCStreamer::isObj ( ) const
inline

Definition at line 315 of file MCStreamer.h.

References IsObj.

◆ isVerboseAsm()

virtual bool llvm::MCStreamer::isVerboseAsm ( ) const
inlinevirtual

Return true if this streamer supports verbose assembly and if it is enabled.

Reimplemented in llvm::SystemZHLASMAsmStreamer.

Definition at line 364 of file MCStreamer.h.

◆ maybeEmitDwarf64Mark()

void MCStreamer::maybeEmitDwarf64Mark ( )

Emit a special value of 0xffffffff if producing 64-bit debugging info.

Definition at line 1111 of file MCStreamer.cpp.

References AddComment(), llvm::dwarf::DW_LENGTH_DWARF64, llvm::dwarf::DWARF64, and emitInt32().

Referenced by emitDwarfUnitLength(), and emitDwarfUnitLength().

◆ mayHaveInstructions()

virtual bool llvm::MCStreamer::mayHaveInstructions ( MCSection & Sec) const
inlinevirtual

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1086 of file MCStreamer.h.

Referenced by llvm::MCContext::finalizeDwarfSections().

◆ operator=()

MCStreamer & llvm::MCStreamer::operator= ( const MCStreamer & )
delete

References MCStreamer().

◆ popSection()

◆ pushSection()

◆ reset()

void MCStreamer::reset ( )
virtual

◆ setAllowAutoPadding()

void llvm::MCStreamer::setAllowAutoPadding ( bool v)
inline

◆ setStartTokLocPtr()

void llvm::MCStreamer::setStartTokLocPtr ( const SMLoc * Loc)
inline

Definition at line 305 of file MCStreamer.h.

◆ setTargetStreamer()

void llvm::MCStreamer::setTargetStreamer ( MCTargetStreamer * TS)
inline

Definition at line 301 of file MCStreamer.h.

Referenced by llvm::MCTargetStreamer::MCTargetStreamer().

◆ setUseAssemblerInfoForParsing()

void llvm::MCStreamer::setUseAssemblerInfoForParsing ( bool v)
inline

Definition at line 321 of file MCStreamer.h.

◆ switchSection() [1/2]

bool MCStreamer::switchSection ( MCSection * Section,
const MCExpr * SubsecExpr )

◆ switchSection() [2/2]

void MCStreamer::switchSection ( MCSection * Section,
uint32_t Subsec = 0 )
virtual

Set the current section where code is being emitted to Section.

This is required to update CurSection.

This corresponds to assembler directives like .section, .text, etc.

Reimplemented in llvm::MipsELFStreamer.

Definition at line 1363 of file MCStreamer.cpp.

References assert(), and changeSection().

Referenced by addAllTypesFromDWP(), addAllTypesFromTypesSection(), llvm::MCDwarfDwoLineTable::Emit(), llvm::MCDwarfFrameEmitter::Emit(), llvm::MCGenDwarfInfo::Emit(), llvm::Win64EH::ARM64UnwindEmitter::Emit(), llvm::Win64EH::ARMUnwindEmitter::Emit(), llvm::Win64EH::UnwindEmitter::Emit(), llvm::MCDwarfLineTable::emit(), llvm::MCPseudoProbeSections::emit(), llvm::MCSFrameEmitter::emit(), llvm::CSKYConstantPool::emitAll(), llvm::MCWinCOFFStreamer::emitCOFFSafeSEH(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MCWinCOFFStreamer::emitCommonSymbol(), emitConstantPool(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::MCObjectStreamer::emitDwarfLineEndEntry(), EmitGenDwarfAbbrev(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), emitGenDwarfRanges(), llvm::MCELFStreamer::emitIdent(), llvm::TargetLoweringObjectFileCOFF::emitLinkerDirectives(), llvm::TargetLoweringObjectFileELF::emitLinkerDirectives(), llvm::XtensaTargetELFStreamer::emitLiteral(), llvm::MCWinCOFFStreamer::emitLocalCommonSymbol(), llvm::MipsTargetELFStreamer::emitMipsAbiFlags(), llvm::TargetLoweringObjectFileCOFF::emitModuleMetadata(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), llvm::TargetLoweringObjectFileMachO::emitModuleMetadata(), emitNonLazyStubs(), llvm::RISCVTargetStreamer::emitNoteGnuPropertySection(), llvm::AArch64TargetStreamer::emitNoteSection(), llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), llvm::TargetLoweringObjectFile::emitPseudoProbeDescMetadata(), llvm::MCDwarfLineStr::emitSection(), llvm::Win64EH::ARM64UnwindEmitter::EmitUnwindInfo(), llvm::Win64EH::ARMUnwindEmitter::EmitUnwindInfo(), llvm::Win64EH::UnwindEmitter::EmitUnwindInfo(), emitWinCFIEndProc(), endSection(), llvm::MipsTargetELFStreamer::finish(), llvm::MCWinCOFFStreamer::finishImpl(), llvm::handleSection(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), llvm::MCELFStreamer::initSections(), llvm::MCWinCOFFStreamer::initSections(), llvm::FaultMaps::serializeToFaultMapSection(), llvm::StackMaps::serializeToStackMapSection(), smallData(), switchSection(), llvm::MipsELFStreamer::switchSection(), llvm::write(), llvm::writeIndex(), and llvm::writeStringsAndOffsets().

◆ switchSectionNoPrint()

void MCStreamer::switchSectionNoPrint ( MCSection * Section)

Similar to switchSection, but does not print the section directive.

Definition at line 1393 of file MCStreamer.cpp.

References changeSection().

Referenced by initSections().

◆ tryEmitDwarfFileDirective()

Expected< unsigned > MCStreamer::tryEmitDwarfFileDirective ( unsigned FileNo,
StringRef Directory,
StringRef Filename,
std::optional< MD5::MD5Result > Checksum = std::nullopt,
std::optional< StringRef > Source = std::nullopt,
unsigned CUID = 0 )
virtual

Associate a filename with a specified logical file number.

Also associate a directory, optional checksum, and optional source text with the logical file. This implements the DWARF2 '.file 4 "dir/foo.c"' assembler directive, and the DWARF5 '.file 4 "dir/foo.c" md5 "..." source "..."' assembler directive.

Definition at line 206 of file MCStreamer.cpp.

References getContext(), and llvm::MCContext::getDwarfFile().

Referenced by emitDwarfFileDirective().

◆ visitUsedExpr()

◆ visitUsedSymbol()

void MCStreamer::visitUsedSymbol ( const MCSymbol & Sym)
virtual

Reimplemented in llvm::MCObjectStreamer.

Definition at line 1162 of file MCStreamer.cpp.

Referenced by visitUsedExpr(), and ~MCStreamer().

Member Data Documentation

◆ CurFrag

◆ CurrentWinEpilog

WinEH::FrameInfo::Epilog* llvm::MCStreamer::CurrentWinEpilog = nullptr
protected

◆ IsObj

bool llvm::MCStreamer::IsObj = false
protected

Definition at line 262 of file MCStreamer.h.

Referenced by isObj(), and llvm::MCObjectStreamer::MCObjectStreamer().


The documentation for this class was generated from the following files: