13#ifndef LLVM_MC_MCSTREAMER_H
14#define LLVM_MC_MCSTREAMER_H
106 virtual void emitLabel(
MCSymbol *Symbol);
130 virtual void emitConstantPools();
132 virtual void finish();
196 virtual void reset();
208 std::unique_ptr<AssemblerConstantPools> ConstantPools;
223 std::unique_ptr<MCTargetStreamer> TargetStreamer;
233 std::vector<std::unique_ptr<WinEH::FrameInfo>> WinFrameInfos;
236 size_t CurrentProcWinFrameInfoStartIndex;
244 const SMLoc *StartTokLocPtr =
nullptr;
250 unsigned NextWinCFIID = 0;
252 bool UseAssemblerInfoForParsing =
true;
259 bool AllowAutoPadding =
false;
283 return CurrentWinFrameInfo;
288 virtual void emitWindowsUnwindTables();
293 bool checkCVLocSection(
unsigned FuncId,
unsigned FileNo,
SMLoc Loc);
306 TargetStreamer.reset(TS);
311 return StartTokLocPtr ? *StartTokLocPtr :
SMLoc();
314 void setLFIRewriter(std::unique_ptr<MCLFIRewriter> Rewriter);
320 virtual void reset();
333 return TargetStreamer.get();
349 unsigned getNumFrameInfos();
352 bool hasUnfinishedDwarfFrameInfo();
356 return WinFrameInfos;
404 virtual void emitRawComment(
const Twine &
T,
bool TabPrefix =
true);
408 virtual void addExplicitComment(
const Twine &
T);
411 virtual void emitExplicitComments();
423 if (!SectionStack.empty())
424 return SectionStack.back().first;
433 if (!SectionStack.empty())
434 return SectionStack.back().second;
450 SectionStack.push_back(
458 virtual bool popSection();
468 void switchSectionNoPrint(
MCSection *Section);
471 virtual void initSections(
bool NoExecStack,
const MCSubtargetInfo &STI);
491 virtual void emitEHSymAttributes(
const MCSymbol *Symbol,
MCSymbol *EHSymbol);
494 virtual void emitSubsectionsViaSymbols();
505 unsigned Minor,
unsigned Update,
511 unsigned Minor,
unsigned Update,
522 const Triple *DarwinTargetVariantTriple,
643 unsigned Lang,
unsigned Reason,
644 unsigned FunctionSize,
bool hasDebug);
684 Align ByteAlignment) = 0;
692 Align ByteAlignment);
766 virtual void emitULEB128Value(
const MCExpr *
Value);
768 virtual void emitSLEB128Value(
const MCExpr *
Value);
772 unsigned emitULEB128IntValue(
uint64_t Value,
unsigned PadTo = 0);
776 unsigned emitSLEB128IntValue(int64_t
Value);
780 void emitSymbolValue(
const MCSymbol *Sym,
unsigned Size,
781 bool IsSectionRelative =
false);
805 virtual void emitFill(
const MCExpr &NumValues, int64_t
Size, int64_t Expr,
808 virtual void emitNops(int64_t NumBytes, int64_t ControlledNopLength,
831 virtual void emitValueToAlignment(
Align Alignment, int64_t Fill = 0,
833 unsigned MaxBytesToEmit = 0);
846 unsigned MaxBytesToEmit = 0);
848 virtual void emitPrefAlign(
Align A);
879 std::optional<MD5::MD5Result> Checksum = std::nullopt,
880 std::optional<StringRef> Source = std::nullopt,
unsigned CUID = 0) {
893 std::optional<MD5::MD5Result> Checksum = std::nullopt,
894 std::optional<StringRef> Source = std::nullopt,
unsigned CUID = 0);
898 std::optional<MD5::MD5Result> Checksum,
899 std::optional<StringRef> Source,
902 virtual void emitCFIBKeyFrame();
903 virtual void emitCFIMTETaggedFrame();
907 virtual void emitDwarfLocDirective(
unsigned FileNo,
unsigned Line,
908 unsigned Column,
unsigned Flags,
909 unsigned Isa,
unsigned Discriminator,
916 unsigned FileNo,
unsigned Line,
unsigned Column,
unsigned FileIA,
917 unsigned LineIA,
unsigned ColumnIA,
const MCSymbol *Sym,
unsigned Flags,
918 unsigned Isa,
unsigned Discriminator,
StringRef FileName,
922 virtual void emitDwarfLocLabelDirective(SMLoc Loc, StringRef Name);
927 virtual bool emitCVFileDirective(
unsigned FileNo, StringRef
Filename,
928 ArrayRef<uint8_t> Checksum,
929 unsigned ChecksumKind);
932 virtual bool emitCVFuncIdDirective(
unsigned FunctionId);
936 virtual bool emitCVInlineSiteIdDirective(
unsigned FunctionId,
unsigned IAFunc,
937 unsigned IAFile,
unsigned IALine,
938 unsigned IACol, SMLoc Loc);
941 virtual void emitCVLocDirective(
unsigned FunctionId,
unsigned FileNo,
942 unsigned Line,
unsigned Column,
943 bool PrologueEnd,
bool IsStmt,
944 StringRef FileName, SMLoc Loc);
947 virtual void emitCVLinetableDirective(
unsigned FunctionId,
948 const MCSymbol *FnStart,
949 const MCSymbol *FnEnd);
953 virtual void emitCVInlineLinetableDirective(
unsigned PrimaryFunctionId,
954 unsigned SourceFileId,
955 unsigned SourceLineNum,
956 const MCSymbol *FnStartSym,
957 const MCSymbol *FnEndSym);
961 virtual void emitCVDefRangeDirective(
962 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
963 StringRef FixedSizePortion);
965 virtual void emitCVDefRangeDirective(
966 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
967 codeview::DefRangeRegisterRelHeader DRHdr);
969 virtual void emitCVDefRangeDirective(
970 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
971 codeview::DefRangeSubfieldRegisterHeader DRHdr);
973 virtual void emitCVDefRangeDirective(
974 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
975 codeview::DefRangeRegisterHeader DRHdr);
977 virtual void emitCVDefRangeDirective(
978 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
979 codeview::DefRangeFramePointerRelHeader DRHdr);
997 virtual void emitAbsoluteSymbolDiff(
const MCSymbol *Hi,
const MCSymbol *Lo,
1001 virtual void emitAbsoluteSymbolDiffAsULEB128(
const MCSymbol *Hi,
1002 const MCSymbol *Lo);
1004 virtual MCSymbol *getDwarfLineTableSymbol(
unsigned CUID);
1005 virtual void emitCFISections(
bool EH,
bool Debug,
bool SFrame);
1006 void emitCFIStartProc(
bool IsSimple, SMLoc Loc = SMLoc());
1007 void emitCFIEndProc();
1008 virtual void emitCFIDefCfa(int64_t
Register, int64_t Offset, SMLoc Loc = {});
1009 virtual void emitCFIDefCfaOffset(int64_t Offset, SMLoc Loc = {});
1010 virtual void emitCFIDefCfaRegister(int64_t
Register, SMLoc Loc = {});
1011 virtual void emitCFILLVMDefAspaceCfa(int64_t
Register, int64_t Offset,
1012 int64_t AddressSpace, SMLoc Loc = {});
1013 virtual void emitCFIOffset(int64_t
Register, int64_t Offset, SMLoc Loc = {});
1014 virtual void emitCFIPersonality(
const MCSymbol *Sym,
unsigned Encoding);
1015 virtual void emitCFILsda(
const MCSymbol *Sym,
unsigned Encoding);
1016 virtual void emitCFIRememberState(SMLoc Loc);
1017 virtual void emitCFIRestoreState(SMLoc Loc);
1018 virtual void emitCFISameValue(int64_t
Register, SMLoc Loc = {});
1019 virtual void emitCFIRestore(int64_t
Register, SMLoc Loc = {});
1020 virtual void emitCFIRelOffset(int64_t
Register, int64_t Offset, SMLoc Loc);
1021 virtual void emitCFIAdjustCfaOffset(int64_t Adjustment, SMLoc Loc = {});
1022 virtual void emitCFIEscape(StringRef Values, SMLoc Loc = {});
1023 virtual void emitCFIReturnColumn(int64_t
Register);
1024 virtual void emitCFIGnuArgsSize(int64_t
Size, SMLoc Loc = {});
1025 virtual void emitCFISignalFrame();
1026 virtual void emitCFIUndefined(int64_t
Register, SMLoc Loc = {});
1027 virtual void emitCFIRegister(int64_t Register1, int64_t Register2,
1029 virtual void emitCFIWindowSave(SMLoc Loc = {});
1030 virtual void emitCFINegateRAState(SMLoc Loc = {});
1031 virtual void emitCFINegateRAStateWithPC(SMLoc Loc = {});
1032 virtual void emitCFILabelDirective(SMLoc Loc, StringRef Name);
1033 virtual void emitCFIValOffset(int64_t
Register, int64_t Offset,
1036 virtual void emitWinCFIStartProc(
const MCSymbol *Symbol, SMLoc Loc = SMLoc());
1037 virtual void emitWinCFIEndProc(SMLoc Loc = SMLoc());
1042 virtual void emitWinCFIFuncletOrFuncEnd(SMLoc Loc = SMLoc());
1043 virtual void emitWinCFISplitChained(SMLoc Loc = SMLoc());
1044 virtual void emitWinCFIPushReg(MCRegister
Register, SMLoc Loc = SMLoc());
1045 virtual void emitWinCFISetFrame(MCRegister
Register,
unsigned Offset,
1046 SMLoc Loc = SMLoc());
1047 virtual void emitWinCFIAllocStack(
unsigned Size, SMLoc Loc = SMLoc());
1048 virtual void emitWinCFISaveReg(MCRegister
Register,
unsigned Offset,
1049 SMLoc Loc = SMLoc());
1050 virtual void emitWinCFISaveXMM(MCRegister
Register,
unsigned Offset,
1051 SMLoc Loc = SMLoc());
1052 virtual void emitWinCFIPushFrame(
bool Code, SMLoc Loc = SMLoc());
1053 virtual void emitWinCFIEndProlog(SMLoc Loc = SMLoc());
1054 virtual void emitWinCFIBeginEpilogue(SMLoc Loc = SMLoc());
1055 virtual void emitWinCFIEndEpilogue(SMLoc Loc = SMLoc());
1056 virtual void emitWinCFIUnwindV2Start(SMLoc Loc = SMLoc());
1057 virtual void emitWinCFIUnwindVersion(uint8_t Version, SMLoc Loc = SMLoc());
1058 virtual void emitWinEHHandler(
const MCSymbol *Sym,
bool Unwind,
bool Except,
1059 SMLoc Loc = SMLoc());
1060 virtual void emitWinEHHandlerData(SMLoc Loc = SMLoc());
1062 virtual void emitCGProfileEntry(
const MCSymbolRefExpr *From,
1063 const MCSymbolRefExpr *To, uint64_t Count);
1068 MCSection *getAssociatedPDataSection(
const MCSection *TextSec);
1071 MCSection *getAssociatedXDataSection(
const MCSection *TextSec);
1073 virtual void emitSyntaxDirective(StringRef Syntax, StringRef
Options);
1097 virtual void finishImpl();
1104 void maybeEmitDwarf64Mark();
1114 const Twine &Comment);
1117 virtual void emitDwarfLineStartLabel(
MCSymbol *StartSym);
1129 unsigned PointerSize) {}
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
static ManagedStatic< cl::opt< bool, true >, CreateDebug > Debug
This file defines the DenseMap class.
Promote Memory to Register
static constexpr StringLiteral Filename
This file defines the SmallVector class.
Defines the llvm::VersionTuple class, which represents a version in the form major[....
Class for arbitrary precision integers.
virtual void emitUnwindRaw(int64_t StackOffset, const SmallVectorImpl< uint8_t > &Opcodes)
~ARMTargetStreamer() override
void emitTargetAttributes(const MCSubtargetInfo &STI)
Emit the build attributes that only depend on the hardware that we expect.
virtual void reset()
Reset any state between object emissions, i.e.
virtual void emitSetFP(MCRegister FpReg, MCRegister SpReg, int64_t Offset=0)
virtual void annotateTLSDescriptorSequence(const MCSymbolRefExpr *SRE)
virtual void finishAttributeSection()
ARMTargetStreamer(MCStreamer &S)
virtual void emitMovSP(MCRegister Reg, int64_t Offset=0)
virtual void emitARMWinCFISaveSP(unsigned Reg)
virtual void emitPersonalityIndex(unsigned Index)
virtual void emitInst(uint32_t Inst, char Suffix='\0')
virtual void emitARMWinCFISaveLR(unsigned Offset)
virtual void emitArchExtension(uint64_t ArchExt)
virtual void emitTextAttribute(unsigned Attribute, StringRef String)
virtual void emitARMWinCFIAllocStack(unsigned Size, bool Wide)
virtual void emitARMWinCFICustom(unsigned Opcode)
virtual void emitARMWinCFISaveRegMask(unsigned Mask, bool Wide)
virtual void emitRegSave(const SmallVectorImpl< MCRegister > &RegList, bool isVector)
virtual void emitARMWinCFIEpilogEnd()
virtual void emitARMWinCFIPrologEnd(bool Fragment)
virtual void switchVendor(StringRef Vendor)
virtual void emitCode16()
virtual void emitFnStart()
virtual void emitPersonality(const MCSymbol *Personality)
virtual void emitObjectArch(ARM::ArchKind Arch)
const MCExpr * addConstantPoolEntry(const MCExpr *, SMLoc Loc)
Callback used to implement the ldr= pseudo.
virtual void emitHandlerData()
virtual void emitIntTextAttribute(unsigned Attribute, unsigned IntValue, StringRef StringValue="")
virtual void emitThumbSet(MCSymbol *Symbol, const MCExpr *Value)
virtual void emitThumbFunc(MCSymbol *Symbol)
virtual void emitFPU(ARM::FPUKind FPU)
virtual void emitCantUnwind()
virtual void emitARMWinCFISaveFRegs(unsigned First, unsigned Last)
virtual void emitCode32()
virtual void emitSyntaxUnified()
virtual void emitARMWinCFIEpilogStart(unsigned Condition)
virtual void emitPad(int64_t Offset)
void emitCurrentConstantPool()
Callback used to implement the .ltorg directive.
virtual void emitAttribute(unsigned Attribute, unsigned Value)
virtual void emitARMWinCFINop(bool Wide)
void emitConstantPools() override
virtual void emitArch(ARM::ArchKind Arch)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Functions, function parameters, and return types can have attributes to indicate how they should be t...
Tagged union holding either a T or a Error.
Generic interface to target specific assembler backends.
Context object for machine code objects.
Base class for the full range of assembler expressions which are needed for parsing.
This is an instance of a target assembly language printer that converts an MCInst to valid target ass...
Instances of this class represent a single low-level machine instruction.
Wrapper class representing physical registers. Should be passed by value.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
Streaming machine code generation interface.
virtual void emitAddrsig()
virtual void addBlankLine()
Emit a blank line to a .s file to pretty it up.
virtual void visitUsedSymbol(const MCSymbol &Sym)
MCSectionSubPair getPreviousSection() const
Return the previous section that the streamer is emitting code to.
virtual void beginCOFFSymbolDef(const MCSymbol *Symbol)
Start emitting COFF symbol definition.
virtual void emitBinaryData(StringRef Data)
Functionally identical to EmitBytes.
std::unique_ptr< MCLFIRewriter > LFIRewriter
MCStreamer(const MCStreamer &)=delete
virtual void emitGNUAttribute(unsigned Tag, unsigned Value)
Emit a .gnu_attribute directive.
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.
unsigned getNumWinFrameInfos()
void setStartTokLocPtr(const SMLoc *Loc)
MCFragment * getCurrentFragment() const
virtual bool emitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute)=0
Add the given Attribute to Symbol.
virtual void emitCOFFSymbolType(int Type)
Emit the type of the symbol.
virtual void emitRelocDirective(const MCExpr &Offset, StringRef Name, const MCExpr *Expr, SMLoc Loc={})
Record a relocation described by the .reloc directive.
virtual void emitCOFFSymbolIndex(MCSymbol const *Symbol)
Emits the symbol table index of a Symbol into the current section.
virtual void emitCVStringTableDirective()
This implements the CodeView '.cv_stringtable' assembler directive.
virtual bool hasRawTextSupport() const
Return true if this asm streamer supports emitting unformatted text to the .s file with EmitRawText.
SmallVector< MCDwarfFrameInfo, 0 > DwarfFrameInfos
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 & p...
virtual bool isVerboseAsm() const
Return true if this streamer supports verbose assembly and if it is enabled.
virtual void emitCOFFImgRel32(MCSymbol const *Symbol, int64_t Offset)
Emits a COFF image relative relocation.
virtual void endCOFFSymbolDef()
Marks the end of the symbol definition.
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.
WinEH::FrameInfo::Epilog * getCurrentWinEpilog() const
virtual void emitCommonSymbol(MCSymbol *Symbol, uint64_t Size, Align ByteAlignment)=0
Emit a common symbol.
virtual MCAssembler * getAssemblerPtr()
virtual void emitXCOFFSymbolLinkageWithVisibility(MCSymbol *Symbol, MCSymbolAttr Linkage, MCSymbolAttr Visibility)
Emit a symbol's linkage and visibility with a linkage directive for XCOFF.
void setTargetStreamer(MCTargetStreamer *TS)
virtual bool isIntegratedAssemblerRequired() const
Is the integrated assembler required for this streamer to function correctly?
virtual void emitCFIStartProcImpl(MCDwarfFrameInfo &Frame)
virtual void emitCVFileChecksumOffsetDirective(unsigned FileNo)
This implements the CodeView '.cv_filechecksumoffset' assembler directive.
bool getUseAssemblerInfoForParsing()
virtual void emitCOFFSecNumber(MCSymbol const *Symbol)
Emits the physical number of the section containing the given symbol as assigned during object writin...
MCContext & getContext() const
SMLoc getStartTokLoc() const
virtual Expected< unsigned > tryEmitDwarfFileDirective(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 AddComment(const Twine &T, bool EOL=true)
Add a textual comment.
virtual void emitCVFPOData(const MCSymbol *ProcSym, SMLoc Loc={})
This implements the CodeView '.cv_fpo_data' assembler directive.
virtual void emitELFSize(MCSymbol *Symbol, const MCExpr *Value)
Emit an ELF .size directive.
virtual void emitXCOFFLocalCommonSymbol(MCSymbol *LabelSym, uint64_t Size, MCSymbol *CsectSym, Align Alignment)
Emits an lcomm directive with XCOFF csect information.
virtual void emitCOFFSecRel32(MCSymbol const *Symbol, uint64_t Offset)
Emits a COFF section relative relocation.
void emitValue(const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())
virtual void emitIdent(StringRef IdentString)
Emit the "identifiers" directive.
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...
virtual void emitCVFileChecksumsDirective()
This implements the CodeView '.cv_filechecksums' assembler directive.
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 ex...
virtual void emitCOFFSectionIndex(MCSymbol const *Symbol)
Emits a COFF section index.
void setAllowAutoPadding(bool v)
virtual void emitCOFFSecOffset(MCSymbol const *Symbol)
Emits the offset of the symbol from the beginning of the section during object writing (i....
MCTargetStreamer * getTargetStreamer()
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 & p...
MCStreamer(MCContext &Ctx)
virtual void emitDarwinTargetVariantBuildVersion(unsigned Platform, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
virtual bool mayHaveInstructions(MCSection &Sec) const
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.
MCLFIRewriter * getLFIRewriter()
bool isInEpilogCFI() const
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 outp...
void emitInt16(uint64_t Value)
virtual void emitCFIEndProcImpl(MCDwarfFrameInfo &CurFrame)
virtual void emitSymbolDesc(MCSymbol *Symbol, unsigned DescValue)
Set the DescValue for the Symbol.
virtual void emitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, Align ByteAlignment)
Emit a local common (.lcomm) symbol.
size_t getCurFragSize() const
virtual void emitCOFFSafeSEH(MCSymbol const *Symbol)
virtual void emitXCOFFRenameDirective(const MCSymbol *Name, StringRef Rename)
Emit a XCOFF .rename directive which creates a synonym for an illegal or undesirable name.
void pushSection()
Save the current and previous section on the section stack.
void setUseAssemblerInfoForParsing(bool v)
virtual void emitDwarfLocDirectiveWithInlinedAt(unsigned FileNo, unsigned Line, unsigned Column, unsigned FileIA, unsigned LineIA, unsigned ColumnIA, const MCSymbol *Sym, unsigned Flags, unsigned Isa, unsigned Discriminator, StringRef FileName, StringRef Comment={})
This is same as emitDwarfLocDirective, except it has the capability to add inlined_at information.
virtual void emitDataRegion(MCDataRegionType Kind)
Note in the output the specified region Kind.
bool getAllowAutoPadding() const
virtual void emitLinkerOptions(ArrayRef< std::string > Kind)
Emit the given list Options of strings as linker options into the output.
void emitInt64(uint64_t Value)
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 sy...
void emitInt32(uint64_t Value)
ArrayRef< std::unique_ptr< WinEH::FrameInfo > > getWinFrameInfos() const
MCSectionSubPair getCurrentSection() const
Return the current section that the streamer is emitting code to.
virtual void emitELFSymverDirective(const MCSymbol *OriginalSym, StringRef Name, bool KeepOriginalSym)
Emit an ELF .symver directive.
virtual void emitXCOFFCInfoSym(StringRef Name, StringRef Metadata)
Emit a C_INFO symbol with XCOFF embedded metadata to the .info section.
MCSection * getCurrentSectionOnly() const
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.
MCStreamer & operator=(const MCStreamer &)=delete
virtual void emitDwarfLineEndEntry(MCSection *Section, MCSymbol *LastLabel, MCSymbol *EndLabel=nullptr)
Emit the debug line end entry.
virtual void emitLOHDirective(MCLOHType Kind, const MCLOHArgs &Args)
Emit a Linker Optimization Hint (LOH) directive.
void addFragment(MCFragment *F)
virtual void emitVersionMin(MCVersionMinType Type, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
Specify the Mach-O minimum deployment target version.
virtual void emitCOFFSymbolStorageClass(int StorageClass)
Emit the storage class of the symbol.
WinEH::FrameInfo * getCurrentWinFrameInfo()
void emitInt8(uint64_t Value)
virtual void emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size, Align ByteAlignment=Align(1))
Emit a thread local bss (.tbss) symbol.
WinEH::FrameInfo::Epilog * CurrentWinEpilog
virtual void emitBytes(StringRef Data)
Emit the bytes in Data into the output.
virtual void emitAddrsigSym(const MCSymbol *Sym)
void visitUsedExpr(const MCExpr &Expr)
virtual void emitBuildVersion(unsigned Platform, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
Emit/Specify Mach-O build version command.
virtual void changeSection(MCSection *, uint32_t)
This is called by popSection and switchSection, if the current section changes.
Generic base class for all target subtargets.
Represent a reference to a symbol from inside an expression.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Target specific streamer interface.
virtual ~MCTargetStreamer()
MCStreamer & getStreamer()
MCTargetStreamer(MCStreamer &S)
Represents a location in source code.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StackOffset holds a fixed and a scalable offset in bytes.
StringRef - Represent a constant reference to a string, i.e.
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM Value Representation.
Represents a version number in the form major[.minor[.subminor[.build]]].
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI MCStreamer * createNullStreamer(MCContext &Ctx)
Create a dummy machine code streamer, which does nothing.
MCLOHDirective::LOHArgs MCLOHArgs
SmallVector< InlineSite, 8 > MCPseudoProbeInlineStack
@ First
Helpers to iterate all locations in the MemoryEffectsBase class.
void cantFail(Error Err, const char *Msg=nullptr)
Report a fatal error if Err is a failure value.
FunctionAddr VTableAddr uintptr_t uintptr_t Data
MCLOHType
Linker Optimization Hint Type.
std::pair< MCSection *, uint32_t > MCSectionSubPair
This struct is a compact representation of a valid (non-zero power of two) alignment.