9#ifndef LLVM_MC_MCASSEMBLER_H
10#define LLVM_MC_MCASSEMBLER_H
33class MCBoundaryAlignFragment;
34class MCCVDefRangeFragment;
35class MCCVInlineLineTableFragment;
36class MCDwarfCallFrameFragment;
37class MCDwarfLineAddrFragment;
38class MCEncodedFragment;
41class MCPseudoProbeAddrFragment;
42class MCRelaxableFragment;
62 std::unique_ptr<MCAsmBackend> Backend;
63 std::unique_ptr<MCCodeEmitter>
Emitter;
64 std::unique_ptr<MCObjectWriter> Writer;
66 bool HasLayout =
false;
67 bool RelaxAll =
false;
87 unsigned BundleAlignSize = 0;
130 std::tuple<MCValue, uint64_t, bool>
141 std::unique_ptr<MCCodeEmitter>
Emitter,
142 std::unique_ptr<MCObjectWriter> Writer);
214 "Expect a power-of-two bundle align size");
215 BundleAlignSize =
Size;
dxil DXContainer Global Emitter
static RegisterPass< DebugifyFunctionPass > DF("debugify-function", "Attach debug info to a function")
PowerPC TLS Dynamic Call Fixup
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This file defines the SmallPtrSet class.
This file defines the SmallVector class.
Generic interface to target specific assembler backends.
const_iterator begin() const
MCContext & getContext() const
bool getSymbolOffset(const MCSymbol &S, uint64_t &Val) const
void ensureValid(MCSection &Sec) const
uint64_t getSectionAddressSize(const MCSection &Sec) const
MCAssembler & operator=(const MCAssembler &)=delete
void Finish()
Finish - Do final processing and write the object to the output stream.
unsigned getBundleAlignSize() const
bool isBundlingEnabled() const
void setBundleAlignSize(unsigned Size)
void setIsThumbFunc(const MCSymbol *Func)
Flag a function symbol as the target of a .thumb_func directive.
void writeSectionData(raw_ostream &OS, const MCSection *Section) const
Emit the section contents to OS.
MCObjectWriter & getWriter() const
MCCodeEmitter * getEmitterPtr() const
uint64_t getFragmentOffset(const MCFragment &F) const
void layoutBundle(MCFragment *Prev, MCFragment *F) const
SmallVectorImpl< const MCSymbol * > & getSymbols()
MCAssembler(const MCAssembler &)=delete
MCCodeEmitter & getEmitter() const
bool isThumbFunc(const MCSymbol *Func) const
Check whether a given symbol has been flagged with .thumb_func.
const_iterator end() const
MCAsmBackend & getBackend() const
bool registerSection(MCSection &Section)
uint64_t computeFragmentSize(const MCFragment &F) const
Compute the effective fragment size.
const MCSymbol * getBaseSymbol(const MCSymbol &Symbol) const
MCAsmBackend * getBackendPtr() const
iterator_range< pointee_iterator< typename SmallVector< const MCSymbol *, 0 >::const_iterator > > symbols() const
uint64_t getSectionFileSize(const MCSection &Sec) const
void reset()
Reuse an assembler instance.
bool registerSymbol(const MCSymbol &Symbol)
MCDwarfLineTableParams getDWARFLinetableParams() const
void writeFragmentPadding(raw_ostream &OS, const MCEncodedFragment &F, uint64_t FSize) const
Write the necessary bundle padding to OS.
void setRelaxAll(bool Value)
Represents required padding such that a particular other set of fragments does not cross a particular...
Fragment representing the .cv_def_range directive.
Fragment representing the binary annotations produced by the .cv_inline_linetable directive.
MCCodeEmitter - Generic instruction encoding interface.
Context object for machine code objects.
Interface implemented by fragments that contain encoded instructions and/or data.
Encode information on a single operation to perform on a byte sequence (e.g., an encoded instruction)...
Defines the object file and target independent interfaces used by the assembler backend to write nati...
A relaxable fragment holds on to its MCInst, since it may need to be relaxed during the assembler lay...
Instances of this class represent a uniqued identifier for a section in the current translation unit.
Generic base class for all target subtargets.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
This represents an "assembler immediate".
std::pair< iterator, bool > insert(PtrType Ptr)
Inserts Ptr if and only if there is no element in the container equal to Ptr.
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Target - Wrapper for Target specific information.
LLVM Value Representation.
A range adaptor for a pair of iterators.
This class implements an extremely fast bulk output stream that can only output to a stream.
This provides a very simple, boring adaptor for a begin and end iterator into a range type.
This is an optimization pass for GlobalISel generic memory operations.
iterator_range< pointee_iterator< WrappedIteratorT > > make_pointee_range(RangeT &&Range)
An iterator type that allows iterating over the pointees via some other iterator.