13#ifndef LLVM_MC_MCSTREAMER_H
14#define LLVM_MC_MCSTREAMER_H
105 virtual void emitLabel(
MCSymbol *Symbol);
129 virtual void emitConstantPools();
131 virtual void finish();
195 virtual void reset();
207 std::unique_ptr<AssemblerConstantPools> ConstantPools;
222 std::unique_ptr<MCTargetStreamer> TargetStreamer;
224 std::vector<MCDwarfFrameInfo> DwarfFrameInfos;
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;
281 return CurrentWinFrameInfo;
286 virtual void emitWindowsUnwindTables();
291 bool checkCVLocSection(
unsigned FuncId,
unsigned FileNo,
SMLoc Loc);
302 TargetStreamer.reset(TS);
307 return StartTokLocPtr ? *StartTokLocPtr :
SMLoc();
312 virtual void reset();
325 return TargetStreamer.get();
341 unsigned getNumFrameInfos();
344 bool hasUnfinishedDwarfFrameInfo();
348 return WinFrameInfos;
398 virtual void emitRawComment(
const Twine &
T,
bool TabPrefix =
true);
402 virtual void addExplicitComment(
const Twine &
T);
405 virtual void emitExplicitComments();
417 if (!SectionStack.empty())
418 return SectionStack.back().first;
427 if (!SectionStack.empty())
428 return SectionStack.back().second;
444 SectionStack.push_back(
452 virtual bool popSection();
462 void switchSectionNoPrint(
MCSection *Section);
465 virtual void initSections(
bool NoExecStack,
const MCSubtargetInfo &STI);
485 virtual void emitEHSymAttributes(
const MCSymbol *Symbol,
MCSymbol *EHSymbol);
488 virtual void emitSubsectionsViaSymbols();
499 unsigned Minor,
unsigned Update,
505 unsigned Minor,
unsigned Update,
516 const Triple *DarwinTargetVariantTriple,
637 unsigned Lang,
unsigned Reason,
638 unsigned FunctionSize,
bool hasDebug);
678 Align ByteAlignment) = 0;
686 Align ByteAlignment);
760 virtual void emitULEB128Value(
const MCExpr *
Value);
762 virtual void emitSLEB128Value(
const MCExpr *
Value);
766 unsigned emitULEB128IntValue(
uint64_t Value,
unsigned PadTo = 0);
770 unsigned emitSLEB128IntValue(int64_t
Value);
774 void emitSymbolValue(
const MCSymbol *Sym,
unsigned Size,
775 bool IsSectionRelative =
false);
799 virtual void emitFill(
const MCExpr &NumValues, int64_t
Size, int64_t Expr,
802 virtual void emitNops(int64_t NumBytes, int64_t ControlledNopLength,
825 virtual void emitValueToAlignment(
Align Alignment, int64_t Fill = 0,
827 unsigned MaxBytesToEmit = 0);
840 unsigned MaxBytesToEmit = 0);
857 virtual void emitFileDirective(
StringRef Filename);
871 std::optional<MD5::MD5Result> Checksum = std::nullopt,
872 std::optional<StringRef> Source = std::nullopt,
unsigned CUID = 0) {
885 std::optional<MD5::MD5Result> Checksum = std::nullopt,
886 std::optional<StringRef> Source = std::nullopt,
unsigned CUID = 0);
890 std::optional<MD5::MD5Result> Checksum,
891 std::optional<StringRef> Source,
894 virtual void emitCFIBKeyFrame();
895 virtual void emitCFIMTETaggedFrame();
899 virtual void emitDwarfLocDirective(
unsigned FileNo,
unsigned Line,
900 unsigned Column,
unsigned Flags,
901 unsigned Isa,
unsigned Discriminator,
906 virtual void emitDwarfLocLabelDirective(SMLoc Loc, StringRef Name);
911 virtual bool emitCVFileDirective(
unsigned FileNo, StringRef Filename,
912 ArrayRef<uint8_t> Checksum,
913 unsigned ChecksumKind);
916 virtual bool emitCVFuncIdDirective(
unsigned FunctionId);
920 virtual bool emitCVInlineSiteIdDirective(
unsigned FunctionId,
unsigned IAFunc,
921 unsigned IAFile,
unsigned IALine,
922 unsigned IACol, SMLoc Loc);
925 virtual void emitCVLocDirective(
unsigned FunctionId,
unsigned FileNo,
926 unsigned Line,
unsigned Column,
927 bool PrologueEnd,
bool IsStmt,
928 StringRef FileName, SMLoc Loc);
931 virtual void emitCVLinetableDirective(
unsigned FunctionId,
932 const MCSymbol *FnStart,
933 const MCSymbol *FnEnd);
937 virtual void emitCVInlineLinetableDirective(
unsigned PrimaryFunctionId,
938 unsigned SourceFileId,
939 unsigned SourceLineNum,
940 const MCSymbol *FnStartSym,
941 const MCSymbol *FnEndSym);
945 virtual void emitCVDefRangeDirective(
946 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
947 StringRef FixedSizePortion);
949 virtual void emitCVDefRangeDirective(
950 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
951 codeview::DefRangeRegisterRelHeader DRHdr);
953 virtual void emitCVDefRangeDirective(
954 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
955 codeview::DefRangeSubfieldRegisterHeader DRHdr);
957 virtual void emitCVDefRangeDirective(
958 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
959 codeview::DefRangeRegisterHeader DRHdr);
961 virtual void emitCVDefRangeDirective(
962 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
963 codeview::DefRangeFramePointerRelHeader DRHdr);
981 virtual void emitAbsoluteSymbolDiff(
const MCSymbol *Hi,
const MCSymbol *Lo,
985 virtual void emitAbsoluteSymbolDiffAsULEB128(
const MCSymbol *Hi,
988 virtual MCSymbol *getDwarfLineTableSymbol(
unsigned CUID);
989 virtual void emitCFISections(
bool EH,
bool Debug,
bool SFrame);
990 void emitCFIStartProc(
bool IsSimple, SMLoc Loc = SMLoc());
991 void emitCFIEndProc();
992 virtual void emitCFIDefCfa(int64_t
Register, int64_t Offset, SMLoc Loc = {});
993 virtual void emitCFIDefCfaOffset(int64_t Offset, SMLoc Loc = {});
994 virtual void emitCFIDefCfaRegister(int64_t
Register, SMLoc Loc = {});
995 virtual void emitCFILLVMDefAspaceCfa(int64_t
Register, int64_t Offset,
996 int64_t AddressSpace, SMLoc Loc = {});
997 virtual void emitCFIOffset(int64_t
Register, int64_t Offset, SMLoc Loc = {});
998 virtual void emitCFIPersonality(
const MCSymbol *Sym,
unsigned Encoding);
999 virtual void emitCFILsda(
const MCSymbol *Sym,
unsigned Encoding);
1000 virtual void emitCFIRememberState(SMLoc Loc);
1001 virtual void emitCFIRestoreState(SMLoc Loc);
1002 virtual void emitCFISameValue(int64_t
Register, SMLoc Loc = {});
1003 virtual void emitCFIRestore(int64_t
Register, SMLoc Loc = {});
1004 virtual void emitCFIRelOffset(int64_t
Register, int64_t Offset, SMLoc Loc);
1005 virtual void emitCFIAdjustCfaOffset(int64_t Adjustment, SMLoc Loc = {});
1006 virtual void emitCFIEscape(StringRef Values, SMLoc Loc = {});
1007 virtual void emitCFIReturnColumn(int64_t
Register);
1008 virtual void emitCFIGnuArgsSize(int64_t
Size, SMLoc Loc = {});
1009 virtual void emitCFISignalFrame();
1010 virtual void emitCFIUndefined(int64_t
Register, SMLoc Loc = {});
1011 virtual void emitCFIRegister(int64_t Register1, int64_t Register2,
1013 virtual void emitCFIWindowSave(SMLoc Loc = {});
1014 virtual void emitCFINegateRAState(SMLoc Loc = {});
1015 virtual void emitCFINegateRAStateWithPC(SMLoc Loc = {});
1016 virtual void emitCFILabelDirective(SMLoc Loc, StringRef Name);
1017 virtual void emitCFIValOffset(int64_t
Register, int64_t Offset,
1020 virtual void emitWinCFIStartProc(
const MCSymbol *Symbol, SMLoc Loc = SMLoc());
1021 virtual void emitWinCFIEndProc(SMLoc Loc = SMLoc());
1026 virtual void emitWinCFIFuncletOrFuncEnd(SMLoc Loc = SMLoc());
1027 virtual void emitWinCFIStartChained(SMLoc Loc = SMLoc());
1028 virtual void emitWinCFIEndChained(SMLoc Loc = SMLoc());
1029 virtual void emitWinCFIPushReg(MCRegister
Register, SMLoc Loc = SMLoc());
1030 virtual void emitWinCFISetFrame(MCRegister
Register,
unsigned Offset,
1031 SMLoc Loc = SMLoc());
1032 virtual void emitWinCFIAllocStack(
unsigned Size, SMLoc Loc = SMLoc());
1033 virtual void emitWinCFISaveReg(MCRegister
Register,
unsigned Offset,
1034 SMLoc Loc = SMLoc());
1035 virtual void emitWinCFISaveXMM(MCRegister
Register,
unsigned Offset,
1036 SMLoc Loc = SMLoc());
1037 virtual void emitWinCFIPushFrame(
bool Code, SMLoc Loc = SMLoc());
1038 virtual void emitWinCFIEndProlog(SMLoc Loc = SMLoc());
1039 virtual void emitWinCFIBeginEpilogue(SMLoc Loc = SMLoc());
1040 virtual void emitWinCFIEndEpilogue(SMLoc Loc = SMLoc());
1041 virtual void emitWinCFIUnwindV2Start(SMLoc Loc = SMLoc());
1042 virtual void emitWinCFIUnwindVersion(uint8_t Version, SMLoc Loc = SMLoc());
1043 virtual void emitWinEHHandler(
const MCSymbol *Sym,
bool Unwind,
bool Except,
1044 SMLoc Loc = SMLoc());
1045 virtual void emitWinEHHandlerData(SMLoc Loc = SMLoc());
1047 virtual void emitCGProfileEntry(
const MCSymbolRefExpr *From,
1048 const MCSymbolRefExpr *To, uint64_t Count);
1053 MCSection *getAssociatedPDataSection(
const MCSection *TextSec);
1056 MCSection *getAssociatedXDataSection(
const MCSection *TextSec);
1058 virtual void emitSyntaxDirective();
1082 virtual void finishImpl();
1089 void maybeEmitDwarf64Mark();
1099 const Twine &Comment);
1102 virtual void emitDwarfLineStartLabel(
MCSymbol *StartSym);
1114 unsigned PointerSize) {}
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static ManagedStatic< cl::opt< bool, true >, CreateDebug > Debug
This file defines the DenseMap class.
Promote Memory to Register
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.
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.
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.
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 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.