31 cl::desc(
"Disable emission of the extended flags in .loc directives."),
40 "Disable the usage of LEB128 directives, and generate .byte instead."),
104 return isAlnum(
C) ||
C ==
'_' ||
C ==
'$' ||
C ==
'.';
113 for (
char C :
Name) {
129 for (
auto Desc : Descs) {
130 [[maybe_unused]]
auto It =
132 assert(It.second &&
"duplicate Kind");
133 [[maybe_unused]]
auto It2 =
142 "ensure the specifier is set in initializeVariantKinds");
154 if (
auto *SE = dyn_cast<MCSpecifierExpr>(&Expr))
157 Expr.print(
OS,
this);
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
#define clEnumVal(ENUMVAL, DESC)
This file contains constants used for implementing Dwarf debug support.
static cl::opt< DefaultOnOff > DwarfExtendedLoc("dwarf-extended-loc", cl::Hidden, cl::desc("Disable emission of the extended flags in .loc directives."), cl::values(clEnumVal(Default, "Default for platform"), clEnumVal(Enable, "Enabled"), clEnumVal(Disable, "Disabled")), cl::init(Default))
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
const char * Data16bitsDirective
void addInitialFrameState(const MCCFIInstruction &Inst)
virtual void printSpecifierExpr(raw_ostream &, const MCSpecifierExpr &) const
const char * AsciiDirective
This directive allows emission of an ascii string with the standard C escape characters embedded into...
std::vector< MCCFIInstruction > InitialFrameState
llvm::StringMap< uint32_t > NameToAtSpecifier
void initializeAtSpecifiers(ArrayRef< AtSpecifier >)
const char * Data8bitsDirective
These directives are used to output some unit of integer data to the current section.
const char * Data64bitsDirective
llvm::DenseMap< uint32_t, StringRef > AtSpecifierToName
virtual bool evaluateAsRelocatableImpl(const MCSpecifierExpr &, MCValue &Res, const MCAssembler *Asm) const
bool doesAllowAtInName() const
bool PreserveAsmComments
Preserve Comments in assembly.
const char * LabelSuffix
This is appended to emitted labels. Defaults to ":".
StringRef PrivateGlobalPrefix
This prefix is used for globals like constant pool entries that are completely private to the ....
StringRef getSpecifierName(uint32_t S) const
const char * Data32bitsDirective
bool UseIntegratedAssembler
Should we use the integrated assembler? The integrated assembler should be enabled by default (by the...
const char * GlobalDirective
This is the directive used to declare a global entity.
std::optional< uint32_t > getSpecifierForName(StringRef Name) const
StringRef PrivateLabelPrefix
This prefix is used for labels for basic blocks.
void printExpr(raw_ostream &, const MCExpr &) const
const char * InlineAsmStart
If these are nonempty, they contain a directive to emit before and after an inline assembly statement...
bool ParseInlineAsmUsingAsmParser
Use AsmParser to parse inlineAsm when UseIntegratedAssembler is not set.
StringRef LinkerPrivateGlobalPrefix
This prefix is used for symbols that should be passed through the assembler but be removed by the lin...
virtual const MCExpr * getExprForFDESymbol(const MCSymbol *Sym, unsigned Encoding, MCStreamer &Streamer) const
bool PPCUseFullRegisterNames
True if full register names are printed.
const char * InlineAsmEnd
virtual bool isAcceptableChar(char C) const
Return true if C is an acceptable character inside a symbol name.
const char * SeparatorString
This string, if specified, is used to separate instructions from each other when on the same line.
virtual bool shouldOmitSectionDirective(StringRef SectionName) const
Return true if the .section directive should be omitted when emitting SectionName.
bool usesELFSectionDirectiveForBSS() const
bool SupportsExtendedDwarfLocDirective
True if the target supports flags in ".loc" directive, false if only location is allowed.
const char * ZeroDirective
This should be set to the directive used to get some number of zero (and non-zero if supported by the...
const char * AscizDirective
If not null, this allows for special handling of zero terminated strings on this target.
virtual const MCExpr * getExprForPersonalitySymbol(const MCSymbol *Sym, unsigned Encoding, MCStreamer &Streamer) const
bool HasLEB128Directives
True if the target supports LEB128 directives.
virtual bool isValidUnquotedName(StringRef Name) const
Return true if the identifier Name does not need quotes to be syntactically correct.
StringRef CommentString
This indicates the comment string used by the assembler.
const char * WeakDirective
Used to declare a global as being a weak symbol. Defaults to ".weak".
static const MCBinaryExpr * createSub(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
Context object for machine code objects.
Base class for the full range of assembler expressions which are needed for parsing.
LLVM_ABI bool evaluateAsRelocatable(MCValue &Res, const MCAssembler *Asm) const
Try to evaluate the expression to a relocatable value, i.e.
Extension point for target-specific MCExpr subclasses with a relocation specifier,...
const MCExpr * getSubExpr() const
Spec getSpecifier() const
Streaming machine code generation interface.
MCContext & getContext() const
virtual void emitLabel(MCSymbol *Symbol, SMLoc Loc=SMLoc())
Emit a label for Symbol into the current section.
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx, SMLoc Loc=SMLoc())
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
void setSpecifier(uint32_t S)
const MCSymbol * getSubSym() const
iterator find(StringRef Key)
std::pair< iterator, bool > try_emplace(StringRef Key, ArgsTy &&...Args)
Emplace a new element for the specified key into the map if the key isn't already in the map.
StringRef - Represent a constant reference to a string, i.e.
This class implements an extremely fast bulk output stream that can only output to a stream.
@ C
The default llvm calling convention, compatible with C.
ValuesClass values(OptsTy... Options)
Helper to build a ValuesClass by forwarding a variable number of arguments as an initializer list to ...
initializer< Ty > init(const Ty &Val)
This is an optimization pass for GlobalISel generic memory operations.
cl::opt< cl::boolOrDefault > UseLEB128Directives("use-leb128-directives", cl::Hidden, cl::desc("Disable the usage of LEB128 directives, and generate .byte instead."), cl::init(cl::BOU_UNSET))
@ Default
The result values are uniform if and only if all operands are uniform.
Description of the encoding of one expression Op.