31 Streamer.
EmitValue(Entry.Value, Entry.Size, Entry.Loc);
38 unsigned Size,
SMLoc Loc) {
42 auto Itr = C ? CachedEntries.find(C->
getValue()) : CachedEntries.end();
43 if (Itr != CachedEntries.end())
51 CachedEntries[C->
getValue()] = SymRef;
62 if (CP == ConstantPools.
end())
69 AssemblerConstantPools::getOrCreateConstantPool(
MCSection *Section) {
83 for (
auto &CPI : ConstantPools) {
100 unsigned Size,
SMLoc Loc) {
std::vector< std::pair< MCSection *, ConstantPool > >::iterator iterator
Instances of this class represent a uniqued identifier for a section in the current translation unit...
void push_back(const T &Elt)
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx)
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
MCSection * getCurrentSectionOnly() const
Base class for the full range of assembler expressions which are needed for parsing.
MCContext & getContext() const
LLVM_NODISCARD bool empty() const
Context object for machine code objects.
const MCExpr * addEntry(const MCExpr *Value, MCContext &Context, unsigned Size, SMLoc Loc)
iterator find(const KeyT &Key)
void EmitValue(const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())
Streaming machine code generation interface.
MCSymbol * createTempSymbol(bool CanBeUnnamed=true)
Create and return a new assembler temporary symbol with a unique but unspecified name.
virtual void SwitchSection(MCSection *Section, const MCExpr *Subsection=nullptr)
Set the current section where code is being emitted to Section.
void emitForCurrentSection(MCStreamer &Streamer)
const MCExpr * addEntry(MCStreamer &Streamer, const MCExpr *Expr, unsigned Size, SMLoc Loc)
virtual void EmitDataRegion(MCDataRegionType Kind)
Note in the output the specified region Kind.
void emitAll(MCStreamer &Streamer)
static void emitConstantPool(MCStreamer &Streamer, MCSection *Section, ConstantPool &CP)
virtual void EmitLabel(MCSymbol *Symbol)
Emit a label for Symbol into the current section.
virtual void EmitCodeAlignment(unsigned ByteAlignment, unsigned MaxBytesToEmit=0)
Emit nops until the byte alignment ByteAlignment is reached.
void emitEntries(MCStreamer &Streamer)
static GCRegistry::Add< ShadowStackGC > C("shadow-stack","Very portable GC for uncooperative code generators")
LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)
LLVM Value Representation.
Represents a location in source code.