class MCStreamer

Declaration

class MCStreamer { /* full declaration omitted */ };

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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:212

Member Variables

private llvm::MCContext& Context
private std::unique_ptr<MCTargetStreamer> TargetStreamer
private std::vector<MCDwarfFrameInfo> DwarfFrameInfos
private std::vector<std::unique_ptr<WinEH::FrameInfo>> WinFrameInfos
Similar to DwarfFrameInfos, but for SEH unwind info. Chained frames may refer to each other, so use std::unique_ptr to provide pointer stability.
private WinEH::FrameInfo* CurrentWinFrameInfo
private size_t CurrentProcWinFrameInfoStartIndex
private DenseMap<const llvm::MCSymbol*, unsigned int> SymbolOrdering
Tracks an index to represent the order a symbol was emitted in. Zero means we did not emit that symbol.
private SmallVector< std::pair<MCSectionSubPair, MCSectionSubPair>, 4> SectionStack
This is stack of current and previous section values saved by pushSection.
private const llvm::SMLoc* StartTokLocPtr = nullptr
Pointer to the parser's SMLoc if available. This is used to provide locations for diagnostics.
private unsigned int NextWinCFIID = 0
The next unique ID to use when creating a WinCFI-related section (.pdata or .xdata). This ID ensures that we have a one-to-one mapping from code section to unwind info section, which MSVC's incremental linker requires.
private bool UseAssemblerInfoForParsing
private bool AllowAutoPadding = false
Is the assembler allowed to insert padding automatically? For correctness reasons, we sometimes need to ensure instructions aren't separated in unexpected ways. At the moment, this feature is only useable from an integrated assembler, but assembly syntax is under discussion for future inclusion.

Method Overview

Methods

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

Description

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 \n's, they will each get the comment prefix as appropriate. The added comment should not end with a \n. 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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:355

Parameters

const llvm::Twine& T
bool EOL = true

WinEH::FrameInfo* EnsureValidWinFrameInfo(
    llvm::SMLoc Loc)

Description

Retrieve the current frame info if one is available and it is not yet closed. Otherwise, issue an error and return null.

Declared at: llvm/include/llvm/MC/MCStreamer.h:313

Parameters

llvm::SMLoc Loc

MCStreamer(llvm::MCContext& Ctx)

Declared at: llvm/include/llvm/MC/MCStreamer.h:254

Parameters

llvm::MCContext& Ctx

MCStreamer(const llvm::MCStreamer&)

Declared at: llvm/include/llvm/MC/MCStreamer.h:273

Parameters

const llvm::MCStreamer&

virtual void addBlankLine()

Description

Emit a blank line to a .s file to pretty it up.

Declared at: llvm/include/llvm/MC/MCStreamer.h:376

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

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:370

Parameters

const llvm::Twine& T

void assignFragment(llvm::MCSymbol* Symbol,
                    llvm::MCFragment* Fragment)

Description

Sets the symbol's section. Each emitted symbol will be tracked in the ordering table, so we can sort on them later.

Declared at: llvm/include/llvm/MC/MCStreamer.h:471

Parameters

llvm::MCSymbol* Symbol
llvm::MCFragment* Fragment

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

Description

Start emitting COFF symbol definition

Declared at: llvm/include/llvm/MC/MCStreamer.h:566

Parameters

const llvm::MCSymbol* Symbol
- The symbol to have its External & Type fields set.

virtual void changeSection(llvm::MCSection*,
                           const llvm::MCExpr*)

Description

Update streamer for a new active section. This is called by popSection and switchSection, if the current section changes.

Declared at: llvm/include/llvm/MC/MCStreamer.h:408

Parameters

llvm::MCSection*
const llvm::MCExpr*

bool checkCVLocSection(unsigned int FuncId,
                       unsigned int FileNo,
                       llvm::SMLoc Loc)

Description

Returns true if the the .cv_loc directive is in the right section.

Declared at: llvm/include/llvm/MC/MCStreamer.h:270

Parameters

unsigned int FuncId
unsigned int FileNo
llvm::SMLoc Loc

virtual void doFinalizationAtSectionEnd(
    llvm::MCSection* Section)

Description

Do finalization for the streamer at the end of a section.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1154

Parameters

llvm::MCSection* Section

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

Description

Emit the absolute difference between two symbols.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1011

Parameters

const llvm::MCSymbol* Hi
const llvm::MCSymbol* Lo
unsigned int Size

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

Description

Emit the absolute difference between two symbols encoded with ULEB128.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1015

Parameters

const llvm::MCSymbol* Hi
const llvm::MCSymbol* Lo

virtual void emitAddrsig()

Declared at: llvm/include/llvm/MC/MCStreamer.h:1089

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1090

Parameters

const llvm::MCSymbol* Sym

virtual void emitAssemblerFlag(
    llvm::MCAssemblerFlag Flag)

Description

Note in the output the specified \p Flag.

Declared at: llvm/include/llvm/MC/MCStreamer.h:492

Parameters

llvm::MCAssemblerFlag Flag

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

Description

Emit an assignment of \p Value to \p 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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:538

Parameters

llvm::MCSymbol* Symbol
- The symbol being assigned to.
const llvm::MCExpr* Value
- The value for the symbol.

virtual void emitBinaryData(llvm::StringRef Data)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:707

Parameters

llvm::StringRef Data

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

Description

Emit/Specify Mach-O build version command.\p Platform should be one of MachO::PlatformType.

Declared at: llvm/include/llvm/MC/MCStreamer.h:508

Parameters

unsigned int Platform
unsigned int Major
unsigned int Minor
unsigned int Update
llvm::VersionTuple SDKVersion

virtual void emitBundleAlignMode(
    unsigned int AlignPow2)

Description

Set the bundle alignment mode from now on in the section. The argument is the power of 2 to which the alignment is set. The value 0 means turn the bundle alignment off.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1103

Parameters

unsigned int AlignPow2

virtual void emitBundleLock(bool AlignToEnd)

Description

The following instructions are a bundle-locked group.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1109

Parameters

bool AlignToEnd
- If true, the bundle-locked group will be aligned to the end of a bundle.

virtual void emitBundleUnlock()

Description

Ends a bundle-locked group.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1112

virtual void emitBytes(llvm::StringRef Data)

Description

Emit the bytes in \p Data into the output. This is used to implement assembler directives such as .byte, .ascii, etc.

Declared at: llvm/include/llvm/MC/MCStreamer.h:703

Parameters

llvm::StringRef Data

virtual void emitCFIAdjustCfaOffset(
    int64_t Adjustment)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1035

Parameters

int64_t Adjustment

virtual void emitCFIBKeyFrame()

Declared at: llvm/include/llvm/MC/MCStreamer.h:928

virtual void emitCFIDefCfa(int64_t Register,
                           int64_t Offset)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1022

Parameters

int64_t Register
int64_t Offset

virtual void emitCFIDefCfaOffset(int64_t Offset)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1023

Parameters

int64_t Offset

virtual void emitCFIDefCfaRegister(
    int64_t Register)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1024

Parameters

int64_t Register

void emitCFIEndProc()

Declared at: llvm/include/llvm/MC/MCStreamer.h:1021

virtual void emitCFIEndProcImpl(
    llvm::MCDwarfFrameInfo& CurFrame)

Declared at: llvm/include/llvm/MC/MCStreamer.h:257

Parameters

llvm::MCDwarfFrameInfo& CurFrame

virtual void emitCFIEscape(llvm::StringRef Values)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1036

Parameters

llvm::StringRef Values

virtual void emitCFIGnuArgsSize(int64_t Size)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1038

Parameters

int64_t Size

virtual void emitCFILLVMDefAspaceCfa(
    int64_t Register,
    int64_t Offset,
    int64_t AddressSpace)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1025

Parameters

int64_t Register
int64_t Offset
int64_t AddressSpace

virtual llvm::MCSymbol* emitCFILabel()

Description

When emitting an object file, create and emit a real label. When emitting textual assembly, this should do nothing to avoid polluting our output.

Declared at: llvm/include/llvm/MC/MCStreamer.h:309

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1029

Parameters

const llvm::MCSymbol* Sym
unsigned int Encoding

virtual void emitCFIMTETaggedFrame()

Declared at: llvm/include/llvm/MC/MCStreamer.h:929

virtual void emitCFINegateRAState()

Declared at: llvm/include/llvm/MC/MCStreamer.h:1043

virtual void emitCFIOffset(int64_t Register,
                           int64_t Offset)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1027

Parameters

int64_t Register
int64_t Offset

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1028

Parameters

const llvm::MCSymbol* Sym
unsigned int Encoding

virtual void emitCFIRegister(int64_t Register1,
                             int64_t Register2)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1041

Parameters

int64_t Register1
int64_t Register2

virtual void emitCFIRelOffset(int64_t Register,
                              int64_t Offset)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1034

Parameters

int64_t Register
int64_t Offset

virtual void emitCFIRememberState()

Declared at: llvm/include/llvm/MC/MCStreamer.h:1030

virtual void emitCFIRestore(int64_t Register)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1033

Parameters

int64_t Register

virtual void emitCFIRestoreState()

Declared at: llvm/include/llvm/MC/MCStreamer.h:1031

virtual void emitCFIReturnColumn(int64_t Register)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1037

Parameters

int64_t Register

virtual void emitCFISameValue(int64_t Register)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1032

Parameters

int64_t Register

virtual void emitCFISections(bool EH, bool Debug)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1019

Parameters

bool EH
bool Debug

virtual void emitCFISignalFrame()

Declared at: llvm/include/llvm/MC/MCStreamer.h:1039

void emitCFIStartProc(
    bool IsSimple,
    llvm::SMLoc Loc = llvm::SMLoc())

Declared at: llvm/include/llvm/MC/MCStreamer.h:1020

Parameters

bool IsSimple
llvm::SMLoc Loc = llvm::SMLoc()

virtual void emitCFIStartProcImpl(
    llvm::MCDwarfFrameInfo& Frame)

Declared at: llvm/include/llvm/MC/MCStreamer.h:256

Parameters

llvm::MCDwarfFrameInfo& Frame

virtual void emitCFIUndefined(int64_t Register)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1040

Parameters

int64_t Register

virtual void emitCFIWindowSave()

Declared at: llvm/include/llvm/MC/MCStreamer.h:1042

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1068

Parameters

const llvm::MCSymbolRefExpr* From
const llvm::MCSymbolRefExpr* To
uint64_t Count

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

Description

Emits a COFF image relative relocation.

Declared at: llvm/include/llvm/MC/MCStreamer.h:599

Parameters

const llvm::MCSymbol* Symbol
- Symbol the image relative relocation should point to.
int64_t Offset

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:581

Parameters

const llvm::MCSymbol* Symbol

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

Description

Emits a COFF section relative relocation.

Declared at: llvm/include/llvm/MC/MCStreamer.h:594

Parameters

const llvm::MCSymbol* Symbol
- Symbol the section relative relocation should point to.
uint64_t Offset

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

Description

Emits a COFF section index.

Declared at: llvm/include/llvm/MC/MCStreamer.h:589

Parameters

const llvm::MCSymbol* Symbol
- Symbol the section number relocation should point to.

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

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:584

Parameters

const llvm::MCSymbol* Symbol

virtual void emitCOFFSymbolStorageClass(
    int StorageClass)

Description

Emit the storage class of the symbol.

Declared at: llvm/include/llvm/MC/MCStreamer.h:571

Parameters

int StorageClass
- The storage class the symbol should have.

virtual void emitCOFFSymbolType(int Type)

Description

Emit the type of the symbol.

Declared at: llvm/include/llvm/MC/MCStreamer.h:576

Parameters

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

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:991

Parameters

ArrayRef< std::pair<const MCSymbol*, const MCSymbol*>> Ranges
codeview::DefRangeFramePointerRelHeader DRHdr

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:987

Parameters

ArrayRef< std::pair<const MCSymbol*, const MCSymbol*>> Ranges
codeview::DefRangeRegisterHeader DRHdr

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:983

Parameters

ArrayRef< std::pair<const MCSymbol*, const MCSymbol*>> Ranges
codeview::DefRangeSubfieldRegisterHeader DRHdr

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:979

Parameters

ArrayRef< std::pair<const MCSymbol*, const MCSymbol*>> Ranges
codeview::DefRangeRegisterRelHeader DRHdr

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

Description

This implements the CodeView '.cv_def_range' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:975

Parameters

ArrayRef< std::pair<const MCSymbol*, const MCSymbol*>> Ranges
llvm::StringRef FixedSizePortion

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

Description

This implements the CodeView '.cv_fpo_data' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1006

Parameters

const llvm::MCSymbol* ProcSym
llvm::SMLoc Loc = {}

virtual void emitCVFileChecksumOffsetDirective(
    unsigned int FileNo)

Description

This implements the CodeView '.cv_filechecksumoffset' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1003

Parameters

unsigned int FileNo

virtual void emitCVFileChecksumsDirective()

Description

This implements the CodeView '.cv_filechecksums' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:999

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

Description

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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:941

Parameters

unsigned int FileNo
llvm::StringRef Filename
ArrayRef<uint8_t> Checksum
unsigned int ChecksumKind

virtual bool emitCVFuncIdDirective(
    unsigned int FunctionId)

Description

Introduces a function id for use with .cv_loc.

Declared at: llvm/include/llvm/MC/MCStreamer.h:946

Parameters

unsigned int FunctionId

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

Description

This implements the CodeView '.cv_inline_linetable' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:967

Parameters

unsigned int PrimaryFunctionId
unsigned int SourceFileId
unsigned int SourceLineNum
const llvm::MCSymbol* FnStartSym
const llvm::MCSymbol* FnEndSym

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

Description

Introduces an inline call site id for use with .cv_loc. Includes extra information for inline line table generation.

Declared at: llvm/include/llvm/MC/MCStreamer.h:950

Parameters

unsigned int FunctionId
unsigned int IAFunc
unsigned int IAFile
unsigned int IALine
unsigned int IACol
llvm::SMLoc Loc

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

Description

This implements the CodeView '.cv_linetable' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:961

Parameters

unsigned int FunctionId
const llvm::MCSymbol* FnStart
const llvm::MCSymbol* FnEnd

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

Description

This implements the CodeView '.cv_loc' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:955

Parameters

unsigned int FunctionId
unsigned int FileNo
unsigned int Line
unsigned int Column
bool PrologueEnd
bool IsStmt
llvm::StringRef FileName
llvm::SMLoc Loc

virtual void emitCVStringTableDirective()

Description

This implements the CodeView '.cv_stringtable' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:996

virtual void emitCodeAlignment(
    unsigned int ByteAlignment,
    const llvm::MCSubtargetInfo* STI,
    unsigned int MaxBytesToEmit = 0)

Description

Emit nops until the byte alignment \p 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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:871

Parameters

unsigned int ByteAlignment
- The alignment to reach. This must be a power of two on some targets.
const llvm::MCSubtargetInfo* STI
- The MCSubtargetInfo in operation when padding is emitted.
unsigned int MaxBytesToEmit = 0
- The maximum numbers of bytes to emit, or 0. If the alignment cannot be reached in this many bytes, no bytes are emitted.

virtual void emitCommonSymbol(
    llvm::MCSymbol* Symbol,
    uint64_t Size,
    unsigned int ByteAlignment)

Description

Emit a common symbol.

Declared at: llvm/include/llvm/MC/MCStreamer.h:663

Parameters

llvm::MCSymbol* Symbol
- The common symbol to emit.
uint64_t Size
- The size of the common symbol.
unsigned int ByteAlignment
- The alignment of the symbol if non-zero. This must be a power of 2.

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

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:542

Parameters

llvm::MCSymbol* Symbol
const llvm::MCExpr* Value

virtual void emitDTPRel32Value(
    const llvm::MCExpr* Value)

Description

Emit the expression \p Value into the output as a dtprel (32-bit DTP relative) value. This is used to implement assembler directives such as .dtprelword on targets that support them.

Declared at: llvm/include/llvm/MC/MCStreamer.h:777

Parameters

const llvm::MCExpr* Value

virtual void emitDTPRel64Value(
    const llvm::MCExpr* Value)

Description

Emit the expression \p Value into the output as a dtprel (64-bit DTP relative) value. This is used to implement assembler directives such as .dtpreldword on targets that support them.

Declared at: llvm/include/llvm/MC/MCStreamer.h:770

Parameters

const llvm::MCExpr* Value

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:512

Parameters

unsigned int Platform
unsigned int Major
unsigned int Minor
unsigned int Update
llvm::VersionTuple SDKVersion

virtual void emitDataRegion(
    llvm::MCDataRegionType Kind)

Description

Note in the output the specified region \p Kind.

Declared at: llvm/include/llvm/MC/MCStreamer.h:499

Parameters

llvm::MCDataRegionType Kind

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

Description

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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1148

Parameters

int64_t LineDelta
const llvm::MCSymbol* LastLabel
const llvm::MCSymbol* Label
unsigned int PointerSize

virtual void emitDwarfFile0Directive(
    llvm::StringRef Directory,
    llvm::StringRef Filename,
    Optional<MD5::MD5Result> Checksum,
    Optional<llvm::StringRef> Source,
    unsigned int CUID = 0)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:923

Parameters

llvm::StringRef Directory
llvm::StringRef Filename
Optional<MD5::MD5Result> Checksum
Optional<llvm::StringRef> Source
unsigned int CUID = 0

unsigned int emitDwarfFileDirective(
    unsigned int FileNo,
    llvm::StringRef Directory,
    llvm::StringRef Filename,
    Optional<MD5::MD5Result> Checksum = None,
    Optional<llvm::StringRef> Source = None,
    unsigned int CUID = 0)

Description

Associate a filename with a specified logical file number. This implements the DWARF2 '.file 4 "foo.c"' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:902

Parameters

unsigned int FileNo
llvm::StringRef Directory
llvm::StringRef Filename
Optional<MD5::MD5Result> Checksum = None
Optional<llvm::StringRef> Source = None
unsigned int CUID = 0

virtual void emitDwarfLineEndEntry(
    llvm::MCSection* Section,
    llvm::MCSymbol* LastLabel)

Description

Emit the debug line end entry.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1143

Parameters

llvm::MCSection* Section
llvm::MCSymbol* LastLabel

virtual void emitDwarfLineStartLabel(
    llvm::MCSymbol* StartSym)

Description

Emit the debug line start label.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1140

Parameters

llvm::MCSymbol* StartSym

virtual void emitDwarfLocDirective(
    unsigned int FileNo,
    unsigned int Line,
    unsigned int Column,
    unsigned int Flags,
    unsigned int Isa,
    unsigned int Discriminator,
    llvm::StringRef FileName)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:933

Parameters

unsigned int FileNo
unsigned int Line
unsigned int Column
unsigned int Flags
unsigned int Isa
unsigned int Discriminator
llvm::StringRef FileName

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

Description

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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1136

Parameters

const llvm::Twine& Prefix
const llvm::Twine& Comment

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

Description

Emit a unit length field. The actual format, DWARF32 or DWARF64, is chosen according to the settings.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1131

Parameters

uint64_t Length
const llvm::Twine& Comment

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:489

Parameters

const llvm::MCSymbol* Symbol
llvm::MCSymbol* EHSymbol

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

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:641

Parameters

llvm::MCSymbol* Symbol
const llvm::MCExpr* Value

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

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:647

Parameters

const llvm::MCSymbol* OriginalSym
llvm::StringRef Name
bool KeepOriginalSym

virtual void emitExplicitComments()

Description

Emit added explicit comments.

Declared at: llvm/include/llvm/MC/MCStreamer.h:373

virtual void emitFileDirective(
    llvm::StringRef Filename)

Description

Switch to a new logical file. This is used to implement the '.file "foo.c"' assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:890

Parameters

llvm::StringRef Filename

virtual void emitFileDirective(
    llvm::StringRef Filename,
    llvm::StringRef CompilerVerion,
    llvm::StringRef TimeStamp,
    llvm::StringRef Description)

Description

Emit ".file assembler diretive with additioal info.

Declared at: llvm/include/llvm/MC/MCStreamer.h:893

Parameters

llvm::StringRef Filename
llvm::StringRef CompilerVerion
llvm::StringRef TimeStamp
llvm::StringRef Description

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

Description

Emit \p Size bytes worth of the value specified by \p FillValue. This is used to implement assembler directives such as .space or .skip.

Declared at: llvm/include/llvm/MC/MCStreamer.h:818

Parameters

const llvm::MCExpr& NumBytes
- The number of bytes to emit.
uint64_t FillValue
- The value to use when filling bytes.
llvm::SMLoc Loc = llvm::SMLoc()
- The location of the expression for error reporting.

void emitFill(uint64_t NumBytes,
              uint8_t FillValue)

Description

Emit NumBytes bytes worth of the value specified by FillValue. This implements directives such as '.space'.

Declared at: llvm/include/llvm/MC/MCStreamer.h:809

Parameters

uint64_t NumBytes
uint8_t FillValue

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

Description

Emit \p NumValues copies of \p Size bytes. Each \p Size bytes is taken from the lowest order 4 bytes of \p Expr expression. This is used to implement assembler directives such as .fill.

Declared at: llvm/include/llvm/MC/MCStreamer.h:829

Parameters

const llvm::MCExpr& NumValues
- The number of copies of \p Size bytes to emit.
int64_t Size
- The size (in bytes) of each repeated value.
int64_t Expr
- The expression from which \p Size bytes are used.
llvm::SMLoc Loc = llvm::SMLoc()

virtual void emitGNUAttribute(unsigned int Tag,
                              unsigned int Value)

Description

Emit a .gnu_attribute directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:655

Parameters

unsigned int Tag
unsigned int Value

virtual void emitGPRel32Value(
    const llvm::MCExpr* Value)

Description

Emit the expression \p Value into the output as a gprel32 (32-bit GP relative) value. This is used to implement assembler directives such as .gprel32 on targets that support them.

Declared at: llvm/include/llvm/MC/MCStreamer.h:805

Parameters

const llvm::MCExpr* Value

virtual void emitGPRel64Value(
    const llvm::MCExpr* Value)

Description

Emit the expression \p Value into the output as a gprel64 (64-bit GP relative) value. This is used to implement assembler directives such as .gpdword on targets that support them.

Declared at: llvm/include/llvm/MC/MCStreamer.h:798

Parameters

const llvm::MCExpr* Value

virtual void emitIdent(
    llvm::StringRef IdentString)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:898

Parameters

llvm::StringRef IdentString

virtual void emitInstruction(
    const llvm::MCInst& Inst,
    const llvm::MCSubtargetInfo& STI)

Description

Emit the given \p Instruction into the current section.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1093

Parameters

const llvm::MCInst& Inst
const llvm::MCSubtargetInfo& STI

void emitInt16(uint64_t Value)

Declared at: llvm/include/llvm/MC/MCStreamer.h:737

Parameters

uint64_t Value

void emitInt32(uint64_t Value)

Declared at: llvm/include/llvm/MC/MCStreamer.h:738

Parameters

uint64_t Value

void emitInt64(uint64_t Value)

Declared at: llvm/include/llvm/MC/MCStreamer.h:739

Parameters

uint64_t Value

void emitInt8(uint64_t Value)

Declared at: llvm/include/llvm/MC/MCStreamer.h:736

Parameters

uint64_t Value

virtual void emitIntValue(uint64_t Value,
                          unsigned int Size)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:726

Parameters

uint64_t Value
unsigned int Size

virtual void emitIntValue(llvm::APInt Value)

Declared at: llvm/include/llvm/MC/MCStreamer.h:727

Parameters

llvm::APInt Value

virtual void emitIntValueInHex(uint64_t Value,
                               unsigned int Size)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:732

Parameters

uint64_t Value
unsigned int Size

virtual void emitIntValueInHexWithPadding(
    uint64_t Value,
    unsigned int Size)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:744

Parameters

uint64_t Value
unsigned int Size

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

Description

Emit a Linker Optimization Hint (LOH) directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:652

Parameters

llvm::MCLOHType Kind
const llvm::MCLOHArgs& Args
- Arguments of the LOH.

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

Description

Emit a label for \p Symbol into the current section. This corresponds to an assembler statement such as: foo:

Declared at: llvm/include/llvm/MC/MCStreamer.h:487

Parameters

llvm::MCSymbol* 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.
llvm::SMLoc Loc = llvm::SMLoc()

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

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:496

Parameters

ArrayRef<std::string> Kind

virtual void emitLocalCommonSymbol(
    llvm::MCSymbol* Symbol,
    uint64_t Size,
    unsigned int ByteAlignment)

Description

Emit a local common (.lcomm) symbol.

Declared at: llvm/include/llvm/MC/MCStreamer.h:671

Parameters

llvm::MCSymbol* Symbol
- The common symbol to emit.
uint64_t Size
- The size of the common symbol.
unsigned int ByteAlignment
- The alignment of the common symbol in bytes.

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:832

Parameters

int64_t NumBytes
int64_t ControlledNopLength
llvm::SMLoc Loc
const llvm::MCSubtargetInfo& STI

virtual void emitPseudoProbe(
    uint64_t Guid,
    uint64_t Index,
    uint64_t Type,
    uint64_t Attr,
    const llvm::MCPseudoProbeInlineStack&
        InlineStack)

Description

Emit the a pseudo probe into the current section.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1096

Parameters

uint64_t Guid
uint64_t Index
uint64_t Type
uint64_t Attr
const llvm::MCPseudoProbeInlineStack& InlineStack

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

Description

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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:366

Parameters

const llvm::Twine& T
bool TabPrefix = true

void emitRawText(const llvm::Twine& String)

Description

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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1117

Parameters

const llvm::Twine& String

virtual void emitRawTextImpl(
    llvm::StringRef String)

Declared at: llvm/include/llvm/MC/MCStreamer.h:267

Parameters

llvm::StringRef String

virtual Optional<std::pair<bool, std::string>>
emitRelocDirective(
    const llvm::MCExpr& Offset,
    llvm::StringRef Name,
    const llvm::MCExpr* Expr,
    llvm::SMLoc Loc,
    const llvm::MCSubtargetInfo& STI)

Description

Record a relocation described by the .reloc directive. Return None if succeeded. Otherwise, return a pair (Name is invalid, error message).

Declared at: llvm/include/llvm/MC/MCStreamer.h:1084

Parameters

const llvm::MCExpr& Offset
llvm::StringRef Name
const llvm::MCExpr* Expr
llvm::SMLoc Loc
const llvm::MCSubtargetInfo& STI

void emitSLEB128IntValue(int64_t Value)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:758

Parameters

int64_t Value

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:750

Parameters

const llvm::MCExpr* Value

virtual bool emitSymbolAttribute(
    llvm::MCSymbol* Symbol,
    llvm::MCSymbolAttr Attribute)

Description

Add the given \p Attribute to \p Symbol.

Declared at: llvm/include/llvm/MC/MCStreamer.h:554

Parameters

llvm::MCSymbol* Symbol
llvm::MCSymbolAttr Attribute

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

Description

Set the \p DescValue for the \p Symbol.

Declared at: llvm/include/llvm/MC/MCStreamer.h:561

Parameters

llvm::MCSymbol* Symbol
- The symbol to have its n_desc field set.
unsigned int DescValue
- The value to set into the n_desc field.

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

Description

Special case of EmitValue that avoids the client having to pass in a MCExpr for MCSymbols.

Declared at: llvm/include/llvm/MC/MCStreamer.h:762

Parameters

const llvm::MCSymbol* Sym
unsigned int Size
bool IsSectionRelative = false

virtual void emitSyntaxDirective()

Declared at: llvm/include/llvm/MC/MCStreamer.h:1079

virtual void emitTBSSSymbol(
    llvm::MCSection* Section,
    llvm::MCSymbol* Symbol,
    uint64_t Size,
    unsigned int ByteAlignment = 0)

Description

Emit a thread local bss (.tbss) symbol.

Declared at: llvm/include/llvm/MC/MCStreamer.h:692

Parameters

llvm::MCSection* Section
- The thread local common section.
llvm::MCSymbol* Symbol
- The thread local common symbol to emit.
uint64_t Size
- The size of the symbol.
unsigned int ByteAlignment = 0
- The alignment of the thread local common symbol if non-zero. This must be a power of 2 on some targets.

virtual void emitTPRel32Value(
    const llvm::MCExpr* Value)

Description

Emit the expression \p Value into the output as a tprel (32-bit TP relative) value. This is used to implement assembler directives such as .tprelword on targets that support them.

Declared at: llvm/include/llvm/MC/MCStreamer.h:791

Parameters

const llvm::MCExpr* Value

virtual void emitTPRel64Value(
    const llvm::MCExpr* Value)

Description

Emit the expression \p Value into the output as a tprel (64-bit TP relative) value. This is used to implement assembler directives such as .tpreldword on targets that support them.

Declared at: llvm/include/llvm/MC/MCStreamer.h:784

Parameters

const llvm::MCExpr* Value

virtual void emitThumbFunc(llvm::MCSymbol* Func)

Description

Note in the output that the specified \p Func is a Thumb mode function (ARM target only).

Declared at: llvm/include/llvm/MC/MCStreamer.h:525

Parameters

llvm::MCSymbol* Func

void emitULEB128IntValue(uint64_t Value,
                         unsigned int PadTo = 0)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:754

Parameters

uint64_t Value
unsigned int PadTo = 0

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:748

Parameters

const llvm::MCExpr* Value

void emitValue(const llvm::MCExpr* Value,
               unsigned int Size,
               llvm::SMLoc Loc = llvm::SMLoc())

Declared at: llvm/include/llvm/MC/MCStreamer.h:722

Parameters

const llvm::MCExpr* Value
unsigned int Size
llvm::SMLoc Loc = llvm::SMLoc()

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

Description

Emit the expression \p Value into the output as a native integer of the given \p Size bytes. This is used to implement assembler directives such as .word, .quad, etc.

Declared at: llvm/include/llvm/MC/MCStreamer.h:719

Parameters

const llvm::MCExpr* Value
- The value to emit.
unsigned int Size
- The size of the integer (in bytes) to emit. This must match a native machine width.
llvm::SMLoc Loc = llvm::SMLoc()
- The location of the expression for error reporting.

virtual void emitValueToAlignment(
    unsigned int ByteAlignment,
    int64_t Value = 0,
    unsigned int ValueSize = 1,
    unsigned int MaxBytesToEmit = 0)

Description

Emit some number of copies of \p Value until the byte alignment \p ByteAlignment is reached. If the number of bytes need to emit for the alignment is not a multiple of \p ValueSize, then the contents of the emitted fill bytes is undefined. This used to implement the .align assembler directive.

Declared at: llvm/include/llvm/MC/MCStreamer.h:856

Parameters

unsigned int ByteAlignment
- The alignment to reach. This must be a power of two on some targets.
int64_t Value = 0
- The value to use when filling bytes.
unsigned int ValueSize = 1
- The size of the integer (in bytes) to emit for\p Value. This must match a native machine width.
unsigned int MaxBytesToEmit = 0
- The maximum numbers of bytes to emit, or 0. If the alignment cannot be reached in this many bytes, no bytes are emitted.

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

Description

Emit some number of copies of \p Value until the byte offset \p Offset is reached. This is used to implement assembler directives such as .org.

Declared at: llvm/include/llvm/MC/MCStreamer.h:883

Parameters

const llvm::MCExpr* Offset
- The offset to reach. This may be an expression, but the expression must be associated with the current section.
unsigned char Value
- The value to use when filling bytes.
llvm::SMLoc Loc

void emitVersionForTarget(
    const llvm::Triple& Target,
    const llvm::VersionTuple& SDKVersion,
    const llvm::Triple* DarwinTargetVariantTriple,
    const llvm::VersionTuple&
        DarwinTargetVariantSDKVersion)

Declared at: llvm/include/llvm/MC/MCStreamer.h:518

Parameters

const llvm::Triple& Target
const llvm::VersionTuple& SDKVersion
const llvm::Triple* DarwinTargetVariantTriple
const llvm::VersionTuple& DarwinTargetVariantSDKVersion

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

Description

Specify the Mach-O minimum deployment target version.

Declared at: llvm/include/llvm/MC/MCStreamer.h:502

Parameters

llvm::MCVersionMinType Type
unsigned int Major
unsigned int Minor
unsigned int Update
llvm::VersionTuple SDKVersion

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

Description

Emit an weak reference from \p Alias to \p Symbol. This corresponds to an assembler statement such as: .weakref alias, symbol

Declared at: llvm/include/llvm/MC/MCStreamer.h:551

Parameters

llvm::MCSymbol* Alias
- The alias that is being created.
const llvm::MCSymbol* Symbol
- The symbol being aliased.

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1057

Parameters

unsigned int Size
llvm::SMLoc Loc = llvm::SMLoc()

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1053

Parameters

llvm::SMLoc Loc = llvm::SMLoc()

virtual void emitWinCFIEndProc(
    llvm::SMLoc Loc = llvm::SMLoc())

Declared at: llvm/include/llvm/MC/MCStreamer.h:1046

Parameters

llvm::SMLoc Loc = llvm::SMLoc()

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1063

Parameters

llvm::SMLoc Loc = llvm::SMLoc()

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

Description

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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1051

Parameters

llvm::SMLoc Loc = llvm::SMLoc()

virtual void emitWinCFIPushFrame(
    bool Code,
    llvm::SMLoc Loc = llvm::SMLoc())

Declared at: llvm/include/llvm/MC/MCStreamer.h:1062

Parameters

bool Code
llvm::SMLoc Loc = llvm::SMLoc()

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1054

Parameters

llvm::MCRegister Register
llvm::SMLoc Loc = llvm::SMLoc()

virtual void emitWinCFISaveReg(
    llvm::MCRegister Register,
    unsigned int Offset,
    llvm::SMLoc Loc = llvm::SMLoc())

Declared at: llvm/include/llvm/MC/MCStreamer.h:1058

Parameters

llvm::MCRegister Register
unsigned int Offset
llvm::SMLoc Loc = llvm::SMLoc()

virtual void emitWinCFISaveXMM(
    llvm::MCRegister Register,
    unsigned int Offset,
    llvm::SMLoc Loc = llvm::SMLoc())

Declared at: llvm/include/llvm/MC/MCStreamer.h:1060

Parameters

llvm::MCRegister Register
unsigned int Offset
llvm::SMLoc Loc = llvm::SMLoc()

virtual void emitWinCFISetFrame(
    llvm::MCRegister Register,
    unsigned int Offset,
    llvm::SMLoc Loc = llvm::SMLoc())

Declared at: llvm/include/llvm/MC/MCStreamer.h:1055

Parameters

llvm::MCRegister Register
unsigned int Offset
llvm::SMLoc Loc = llvm::SMLoc()

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1052

Parameters

llvm::SMLoc Loc = llvm::SMLoc()

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1045

Parameters

const llvm::MCSymbol* Symbol
llvm::SMLoc Loc = llvm::SMLoc()

virtual void emitWinEHHandler(
    const llvm::MCSymbol* Sym,
    bool Unwind,
    bool Except,
    llvm::SMLoc Loc = llvm::SMLoc())

Declared at: llvm/include/llvm/MC/MCStreamer.h:1064

Parameters

const llvm::MCSymbol* Sym
bool Unwind
bool Except
llvm::SMLoc Loc = llvm::SMLoc()

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1066

Parameters

llvm::SMLoc Loc = llvm::SMLoc()

virtual void emitWindowsUnwindTables()

Declared at: llvm/include/llvm/MC/MCStreamer.h:265

virtual void emitWindowsUnwindTables(
    WinEH::FrameInfo* Frame)

Declared at: llvm/include/llvm/MC/MCStreamer.h:263

Parameters

WinEH::FrameInfo* Frame

virtual void emitXCOFFLocalCommonSymbol(
    llvm::MCSymbol* LabelSym,
    uint64_t Size,
    llvm::MCSymbol* CsectSym,
    unsigned int ByteAlignment)

Description

Emits an lcomm directive with XCOFF csect information.

Declared at: llvm/include/llvm/MC/MCStreamer.h:608

Parameters

llvm::MCSymbol* LabelSym
- Label on the block of storage.
uint64_t Size
- The size of the block of storage.
llvm::MCSymbol* CsectSym
- Csect name for the block of storage.
unsigned int ByteAlignment
- The alignment of the symbol in bytes. Must be a power of 2.

virtual void emitXCOFFRefDirective(
    llvm::StringRef Sym)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:635

Parameters

llvm::StringRef Sym
- The symbol on the .ref directive.

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

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:629

Parameters

const llvm::MCSymbol* Name
- The name used internally in the assembly for references to the symbol.
llvm::StringRef Rename
- The value to which the Name parameter is changed at the end of assembly.

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

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:618

Parameters

llvm::MCSymbol* Symbol
- The symbol to emit.
llvm::MCSymbolAttr Linkage
- The linkage of the symbol to emit.
llvm::MCSymbolAttr Visibility
- The visibility of the symbol to emit or MCSA_Invalid if the symbol does not have an explicit visibility.

virtual void emitZerofill(
    llvm::MCSection* Section,
    llvm::MCSymbol* Symbol = nullptr,
    uint64_t Size = 0,
    unsigned int ByteAlignment = 0,
    llvm::SMLoc Loc = llvm::SMLoc())

Description

Emit the zerofill section and an optional symbol.

Declared at: llvm/include/llvm/MC/MCStreamer.h:681

Parameters

llvm::MCSection* Section
- The zerofill section to create and or to put the symbol
llvm::MCSymbol* Symbol = nullptr
- The zerofill symbol to emit, if non-NULL.
uint64_t Size = 0
- The size of the zerofill symbol.
unsigned int ByteAlignment = 0
- The alignment of the zerofill symbol if non-zero. This must be a power of 2 on some targets.
llvm::SMLoc Loc = llvm::SMLoc()

void emitZeros(uint64_t NumBytes)

Description

Emit NumBytes worth of zeros. This function properly handles data in virtual sections.

Declared at: llvm/include/llvm/MC/MCStreamer.h:837

Parameters

uint64_t NumBytes

virtual void endCOFFSymbolDef()

Description

Marks the end of the symbol definition.

Declared at: llvm/include/llvm/MC/MCStreamer.h:579

llvm::MCSymbol* endSection(
    llvm::MCSection* Section)

Declared at: llvm/include/llvm/MC/MCStreamer.h:465

Parameters

llvm::MCSection* Section

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

Description

Finish emission of machine code.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1122

Parameters

llvm::SMLoc EndLoc = llvm::SMLoc()

virtual void finishImpl()

Description

Streamer specific finalization.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1120

void generateCompactUnwindEncodings(
    llvm::MCAsmBackend* MAB)

Declared at: llvm/include/llvm/MC/MCStreamer.h:325

Parameters

llvm::MCAsmBackend* MAB

bool getAllowAutoPadding() const

Declared at: llvm/include/llvm/MC/MCStreamer.h:305

virtual llvm::MCAssembler* getAssemblerPtr()

Declared at: llvm/include/llvm/MC/MCStreamer.h:295

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

Description

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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1074

Parameters

const llvm::MCSection* TextSec

llvm::MCSection* getAssociatedXDataSection(
    const llvm::MCSection* TextSec)

Description

Get the .xdata section used for the given section.

Declared at: llvm/include/llvm/MC/MCStreamer.h:1077

Parameters

const llvm::MCSection* TextSec

virtual llvm::raw_ostream& getCommentOS()

Description

Return a raw_ostream that comments can be written to. Unlike AddComment, you are required to terminate comments with \nif you use this method.

Declared at: llvm/include/llvm/MC/MCStreamer.h:360

llvm::MCContext& getContext() const

Declared at: llvm/include/llvm/MC/MCStreamer.h:293

llvm::MCDwarfFrameInfo* getCurrentDwarfFrameInfo()

Declared at: llvm/include/llvm/MC/MCStreamer.h:217

llvm::MCSectionSubPair getCurrentSection() const

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:384

llvm::MCSection* getCurrentSectionOnly() const

Declared at: llvm/include/llvm/MC/MCStreamer.h:389

WinEH::FrameInfo* getCurrentWinFrameInfo()

Declared at: llvm/include/llvm/MC/MCStreamer.h:259

ArrayRef<llvm::MCDwarfFrameInfo>
getDwarfFrameInfos() const

Declared at: llvm/include/llvm/MC/MCStreamer.h:316

virtual llvm::MCSymbol* getDwarfLineTableSymbol(
    unsigned int CUID)

Declared at: llvm/include/llvm/MC/MCStreamer.h:1018

Parameters

unsigned int CUID

virtual llvm::StringRef getMnemonic(
    llvm::MCInst& MI)

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:475

Parameters

llvm::MCInst& MI

unsigned int getNumFrameInfos()

Declared at: llvm/include/llvm/MC/MCStreamer.h:315

unsigned int getNumWinFrameInfos()

Declared at: llvm/include/llvm/MC/MCStreamer.h:320

llvm::MCSectionSubPair getPreviousSection() const

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:392

llvm::SMLoc getStartTokLoc() const

Declared at: llvm/include/llvm/MC/MCStreamer.h:285

unsigned int getSymbolOrder(
    const llvm::MCSymbol* Sym) const

Description

Returns an index to represent the order a symbol was emitted in. (zero if we did not emit that symbol)

Declared at: llvm/include/llvm/MC/MCStreamer.h:400

Parameters

const llvm::MCSymbol* Sym

llvm::MCTargetStreamer* getTargetStreamer()

Declared at: llvm/include/llvm/MC/MCStreamer.h:300

bool getUseAssemblerInfoForParsing()

Declared at: llvm/include/llvm/MC/MCStreamer.h:298

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:321

virtual bool hasRawTextSupport() const

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:336

bool hasUnfinishedDwarfFrameInfo()

Declared at: llvm/include/llvm/MC/MCStreamer.h:318

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

Description

Create the default sections and set the initial one.

Declared at: llvm/include/llvm/MC/MCStreamer.h:463

Parameters

bool NoExecStack
const llvm::MCSubtargetInfo& STI

virtual bool isIntegratedAssemblerRequired() const

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:340

virtual bool isVerboseAsm() const

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:332

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1124

Parameters

llvm::MCSection& Sec

void maybeEmitDwarf64Mark()

Description

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:1127

bool popSection()

Description

Restore the current and previous section from the section stack. Calls changeSection as needed. Returns false if the stack was empty.

Declared at: llvm/include/llvm/MC/MCStreamer.h:420

void pushSection()

Description

Save the current and previous section on the section stack.

Declared at: llvm/include/llvm/MC/MCStreamer.h:411

virtual void reset()

Description

State management

Declared at: llvm/include/llvm/MC/MCStreamer.h:291

void setAllowAutoPadding(bool v)

Declared at: llvm/include/llvm/MC/MCStreamer.h:304

Parameters

bool v

void setStartTokLocPtr(const llvm::SMLoc* Loc)

Declared at: llvm/include/llvm/MC/MCStreamer.h:284

Parameters

const llvm::SMLoc* Loc

void setTargetStreamer(llvm::MCTargetStreamer* TS)

Declared at: llvm/include/llvm/MC/MCStreamer.h:280

Parameters

llvm::MCTargetStreamer* TS

void setUseAssemblerInfoForParsing(bool v)

Declared at: llvm/include/llvm/MC/MCStreamer.h:297

Parameters

bool v

bool subSection(const llvm::MCExpr* Subsection)

Declared at: llvm/include/llvm/MC/MCStreamer.h:435

Parameters

const llvm::MCExpr* Subsection

virtual void switchSection(
    llvm::MCSection* Section,
    const llvm::MCExpr* Subsection = nullptr)

Description

Set the current section where code is being emitted to \p Section. This is required to update CurSection. This corresponds to assembler directives like .section, .text, etc.

Declared at: llvm/include/llvm/MC/MCStreamer.h:447

Parameters

llvm::MCSection* Section
const llvm::MCExpr* Subsection = nullptr

void switchSectionNoChange(
    llvm::MCSection* Section,
    const llvm::MCExpr* Subsection = nullptr)

Description

Set the current section where code is being emitted to \p Section. This is required to update CurSection. This version does not call changeSection.

Declared at: llvm/include/llvm/MC/MCStreamer.h:453

Parameters

llvm::MCSection* Section
const llvm::MCExpr* Subsection = nullptr

virtual Expected<unsigned int>
tryEmitDwarfFileDirective(
    unsigned int FileNo,
    llvm::StringRef Directory,
    llvm::StringRef Filename,
    Optional<MD5::MD5Result> Checksum = None,
    Optional<llvm::StringRef> Source = None,
    unsigned int CUID = 0)

Description

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.

Declared at: llvm/include/llvm/MC/MCStreamer.h:917

Parameters

unsigned int FileNo
llvm::StringRef Directory
llvm::StringRef Filename
Optional<MD5::MD5Result> Checksum = None
Optional<llvm::StringRef> Source = None
unsigned int CUID = 0

void visitUsedExpr(const llvm::MCExpr& Expr)

Declared at: llvm/include/llvm/MC/MCStreamer.h:277

Parameters

const llvm::MCExpr& Expr

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

Declared at: llvm/include/llvm/MC/MCStreamer.h:278

Parameters

const llvm::MCSymbol& Sym

virtual ~MCStreamer()

Declared at: llvm/include/llvm/MC/MCStreamer.h:275