13#ifndef LLVM_MC_MCSTREAMER_H
14#define LLVM_MC_MCSTREAMER_H
107 virtual void emitLabel(
MCSymbol *Symbol);
131 virtual void emitConstantPools();
133 virtual void finish();
197 virtual void reset();
209 std::unique_ptr<AssemblerConstantPools> ConstantPools;
224 std::unique_ptr<MCTargetStreamer> TargetStreamer;
234 std::vector<std::unique_ptr<WinEH::FrameInfo>> WinFrameInfos;
237 size_t CurrentProcWinFrameInfoStartIndex;
240 uint8_t DefaultWinCFIUnwindVersion = 1;
248 const SMLoc *StartTokLocPtr =
nullptr;
254 unsigned NextWinCFIID = 0;
256 bool UseAssemblerInfoForParsing =
true;
263 bool AllowAutoPadding =
false;
287 return CurrentWinFrameInfo;
292 virtual void emitWindowsUnwindTables();
297 bool checkCVLocSection(
unsigned FuncId,
SMLoc Loc);
310 TargetStreamer.reset(TS);
315 return StartTokLocPtr ? *StartTokLocPtr :
SMLoc();
318 void setLFIRewriter(std::unique_ptr<MCLFIRewriter> Rewriter);
324 virtual void reset();
337 return TargetStreamer.get();
353 unsigned getNumFrameInfos();
356 bool hasUnfinishedDwarfFrameInfo();
360 return WinFrameInfos;
372 return CurrentWinFrameInfo && !CurrentWinFrameInfo->End &&
373 CurrentWinFrameInfo->PrologEnd;
415 virtual void emitRawComment(
const Twine &
T,
bool TabPrefix =
true);
419 virtual void addExplicitComment(
const Twine &
T);
422 virtual void emitExplicitComments();
434 if (!SectionStack.empty())
435 return SectionStack.back().first;
444 if (!SectionStack.empty())
445 return SectionStack.back().second;
461 SectionStack.push_back(
469 virtual bool popSection();
479 void switchSectionNoPrint(
MCSection *Section);
502 virtual void emitEHSymAttributes(
const MCSymbol *Symbol,
MCSymbol *EHSymbol);
505 virtual void emitSubsectionsViaSymbols();
516 unsigned Minor,
unsigned Update,
522 unsigned Minor,
unsigned Update,
535 const Triple *DarwinTargetVariantTriple,
656 unsigned Lang,
unsigned Reason,
657 unsigned FunctionSize,
bool hasDebug);
697 Align ByteAlignment) = 0;
705 Align ByteAlignment);
779 virtual void emitULEB128Value(
const MCExpr *
Value);
781 virtual void emitSLEB128Value(
const MCExpr *
Value);
785 unsigned emitULEB128IntValue(
uint64_t Value,
unsigned PadTo = 0);
789 unsigned emitSLEB128IntValue(int64_t
Value);
793 void emitSymbolValue(
const MCSymbol *Sym,
unsigned Size);
822 virtual void emitFill(
const MCExpr &NumValues, int64_t
Size, int64_t Expr,
825 virtual void emitNops(int64_t NumBytes, int64_t ControlledNopLength,
848 virtual void emitValueToAlignment(
Align Alignment, int64_t Fill = 0,
850 unsigned MaxBytesToEmit = 0);
863 unsigned MaxBytesToEmit = 0);
897 std::optional<MD5::MD5Result> Checksum = std::nullopt,
898 std::optional<StringRef> Source = std::nullopt,
unsigned CUID = 0) {
911 std::optional<MD5::MD5Result> Checksum = std::nullopt,
912 std::optional<StringRef> Source = std::nullopt,
unsigned CUID = 0);
916 std::optional<MD5::MD5Result> Checksum,
917 std::optional<StringRef> Source,
920 virtual void emitCFIBKeyFrame();
921 virtual void emitCFIMTETaggedFrame();
922 virtual void emitCFINonHintPAuthFrame();
926 virtual void emitDwarfLocDirective(
unsigned FileNo,
unsigned Line,
927 unsigned Column,
unsigned Flags,
928 unsigned Isa,
unsigned Discriminator,
935 unsigned FileNo,
unsigned Line,
unsigned Column,
unsigned FileIA,
936 unsigned LineIA,
unsigned ColumnIA,
const MCSymbol *Sym,
unsigned Flags,
937 unsigned Isa,
unsigned Discriminator,
StringRef FileName,
941 virtual void emitDwarfLocLabelDirective(SMLoc Loc, StringRef Name);
946 virtual bool emitCVFileDirective(
unsigned FileNo, StringRef
Filename,
947 ArrayRef<uint8_t> Checksum,
948 unsigned ChecksumKind);
951 virtual bool emitCVFuncIdDirective(
unsigned FunctionId);
955 virtual bool emitCVInlineSiteIdDirective(
unsigned FunctionId,
unsigned IAFunc,
956 unsigned IAFile,
unsigned IALine,
957 unsigned IACol, SMLoc Loc);
960 virtual void emitCVLocDirective(
unsigned FunctionId,
unsigned FileNo,
961 unsigned Line,
unsigned Column,
962 bool PrologueEnd,
bool IsStmt,
963 StringRef FileName, SMLoc Loc);
966 virtual void emitCVLinetableDirective(
unsigned FunctionId,
967 const MCSymbol *FnStart,
968 const MCSymbol *FnEnd);
972 virtual void emitCVInlineLinetableDirective(
unsigned PrimaryFunctionId,
973 unsigned SourceFileId,
974 unsigned SourceLineNum,
975 const MCSymbol *FnStartSym,
976 const MCSymbol *FnEndSym);
980 virtual void emitCVDefRangeDirective(
981 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
982 StringRef FixedSizePortion);
984 virtual void emitCVDefRangeDirective(
985 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
986 codeview::DefRangeRegisterRelHeader DRHdr);
988 virtual void emitCVDefRangeDirective(
989 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
990 codeview::DefRangeSubfieldRegisterHeader DRHdr);
992 virtual void emitCVDefRangeDirective(
993 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
994 codeview::DefRangeRegisterHeader DRHdr);
996 virtual void emitCVDefRangeDirective(
997 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
998 codeview::DefRangeFramePointerRelHeader DRHdr);
1000 virtual void emitCVDefRangeDirective(
1001 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
1002 codeview::DefRangeRegisterRelIndirHeader DRHdr);
1020 virtual void emitAbsoluteSymbolDiff(
const MCSymbol *Hi,
const MCSymbol *
Lo,
1024 virtual void emitAbsoluteSymbolDiffAsULEB128(
const MCSymbol *Hi,
1025 const MCSymbol *
Lo);
1027 virtual MCSymbol *getDwarfLineTableSymbol(
unsigned CUID);
1028 virtual void emitCFISections(
bool EH,
bool Debug,
bool SFrame);
1029 void emitCFIStartProc(
bool IsSimple, SMLoc Loc = SMLoc());
1030 void emitCFIEndProc();
1031 virtual void emitCFIDefCfa(int64_t
Register, int64_t Offset, SMLoc Loc = {});
1032 virtual void emitCFIDefCfaOffset(int64_t Offset, SMLoc Loc = {});
1033 virtual void emitCFIDefCfaRegister(int64_t
Register, SMLoc Loc = {});
1034 virtual void emitCFILLVMDefAspaceCfa(int64_t
Register, int64_t Offset,
1035 int64_t AddressSpace, SMLoc Loc = {});
1036 virtual void emitCFIOffset(int64_t
Register, int64_t Offset, SMLoc Loc = {});
1037 virtual void emitCFIPersonality(
const MCSymbol *Sym,
unsigned Encoding);
1038 virtual void emitCFILsda(
const MCSymbol *Sym,
unsigned Encoding);
1039 virtual void emitCFIRememberState(SMLoc Loc);
1040 virtual void emitCFIRestoreState(SMLoc Loc);
1041 virtual void emitCFISameValue(int64_t
Register, SMLoc Loc = {});
1042 virtual void emitCFIRestore(int64_t
Register, SMLoc Loc = {});
1043 virtual void emitCFIRelOffset(int64_t
Register, int64_t Offset, SMLoc Loc);
1044 virtual void emitCFIAdjustCfaOffset(int64_t Adjustment, SMLoc Loc = {});
1045 virtual void emitCFIEscape(StringRef Values, SMLoc Loc = {});
1046 virtual void emitCFIReturnColumn(int64_t
Register);
1047 virtual void emitCFIGnuArgsSize(int64_t Size, SMLoc Loc = {});
1048 virtual void emitCFISignalFrame();
1049 virtual void emitCFIUndefined(int64_t
Register, SMLoc Loc = {});
1050 virtual void emitCFIRegister(int64_t Register1, int64_t Register2,
1052 virtual void emitCFIWindowSave(SMLoc Loc = {});
1053 virtual void emitCFINegateRAState(SMLoc Loc = {});
1054 virtual void emitCFILLVMRegisterPair(int64_t
Register, int64_t R1,
1055 int64_t R1SizeInBits, int64_t
R2,
1056 int64_t R2SizeInBits, SMLoc Loc = {});
1057 virtual void emitCFILLVMVectorRegisters(
1058 int64_t
Register, ArrayRef<MCCFIInstruction::VectorRegisterWithLane> VRs,
1060 virtual void emitCFILLVMVectorOffset(int64_t
Register,
1061 int64_t RegisterSizeInBits,
1062 int64_t MaskRegister,
1063 int64_t MaskRegisterSizeInBits,
1064 int64_t Offset, SMLoc Loc = {});
1066 emitCFILLVMVectorRegisterMask(int64_t
Register, int64_t SpillRegister,
1067 int64_t SpillRegisterLaneSizeInBits,
1068 int64_t MaskRegister,
1069 int64_t MaskRegisterSizeInBits, SMLoc Loc = {});
1071 virtual void emitCFINegateRAStateWithPC(SMLoc Loc = {});
1072 virtual void emitCFILLVMSetRAState(
unsigned State, MCSymbol *PACSym,
1074 virtual void emitCFILLVMSetRAState(
unsigned State, int64_t Offset,
1076 virtual void emitCFILabelDirective(SMLoc Loc, StringRef Name);
1077 virtual void emitCFIValOffset(int64_t
Register, int64_t Offset,
1080 virtual void emitWinCFIStartProc(
const MCSymbol *Symbol, SMLoc Loc = SMLoc());
1081 virtual void emitWinCFIEndProc(SMLoc Loc = SMLoc());
1086 virtual void emitWinCFIFuncletOrFuncEnd(SMLoc Loc = SMLoc());
1087 virtual void emitWinCFISplitChained(SMLoc Loc = SMLoc());
1088 virtual void emitWinCFIPushReg(MCRegister
Register, SMLoc Loc = SMLoc());
1089 virtual void emitWinCFIPush2Regs(MCRegister Reg1, MCRegister Reg2,
1090 SMLoc Loc = SMLoc());
1091 virtual void emitWinCFISetFrame(MCRegister
Register,
unsigned Offset,
1092 SMLoc Loc = SMLoc());
1093 virtual void emitWinCFIAllocStack(
unsigned Size, SMLoc Loc = SMLoc());
1094 virtual void emitWinCFISaveReg(MCRegister
Register,
unsigned Offset,
1095 SMLoc Loc = SMLoc());
1096 virtual void emitWinCFISaveXMM(MCRegister
Register,
unsigned Offset,
1097 SMLoc Loc = SMLoc());
1098 virtual void emitWinCFIPushFrame(
bool Code, SMLoc Loc = SMLoc());
1099 virtual void emitWinCFIEndProlog(SMLoc Loc = SMLoc());
1100 virtual void emitWinCFIBeginEpilogue(SMLoc Loc = SMLoc());
1101 virtual void emitWinCFIEndEpilogue(SMLoc Loc = SMLoc());
1102 virtual void emitWinCFIUnwindV2Start(SMLoc Loc = SMLoc());
1103 virtual void emitWinCFIUnwindVersion(uint8_t Version, SMLoc Loc = SMLoc());
1107 DefaultWinCFIUnwindVersion =
V;
1110 return DefaultWinCFIUnwindVersion;
1112 virtual void emitWinEHHandler(
const MCSymbol *Sym,
bool Unwind,
bool Except,
1150 virtual void emitBundleAlignMode(
Align Alignment);
1156 virtual void emitBundleLock(
bool AlignToEnd,
const MCSubtargetInfo &STI);
1167 virtual void finishImpl();
1174 void maybeEmitDwarf64Mark();
1184 const Twine &Comment);
1187 virtual void emitDwarfLineStartLabel(
MCSymbol *StartSym);
1199 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
Func getContext().diagnose(DiagnosticInfoUnsupported(Func
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)
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)
void setDefaultWinCFIUnwindVersion(uint8_t V)
Set the default unwind version for new WinCFI frames.
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()
bool isWinCFIPrologEnded() const
Returns true if a WinCFI prolog has been completed (.seh_endprologue) in the current frame.
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.
uint8_t getDefaultWinCFIUnwindVersion() const
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 void emitTargetTriple(StringRef TargetTriple)
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.
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.
MCLOHType
Linker Optimization Hint Type.
RelativeUniformCounterPtr ValuesPtrExpr VTableAddr Count
std::pair< MCSection *, uint32_t > MCSectionSubPair
@ End
Run the machine verifier once, at the end of the pipeline.
This struct is a compact representation of a valid (non-zero power of two) alignment.