46 bool ShouldEmitExceptionTable =
false;
49 ShouldEmitExceptionTable =
true;
53 if (!ShouldEmitExceptionTable)
56 assert(LSDALabel &&
".GCC_exception_table has not been emitted!");
83 for (
unsigned I = 0,
N = LandingPads.
size();
I <
N; ++
I) {
93 if (CallSites.
size() < LPadIndex + 1)
94 CallSites.
resize(LPadIndex + 1);
95 CallSites[LPadIndex] = Site;
Structure describing an entry in the call-site table.
std::unique_ptr< MCStreamer > OutStreamer
This is the MCStreamer object for the file we are generating.
MCSymbol * GetExternalSymbolSymbol(StringRef Sym) const
Return the MCSymbol for the specified ExternalSymbol.
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx)
MCSymbol * lookupSymbol(const Twine &Name) const
Get the symbol for Name, or null.
This class represents lattice values for constants.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
MCContext & OutContext
This is the context for the output file that we are streaming.
MachineFunction * MF
The current machine function.
void endFunction(const MachineFunction *MF) override
Gather post-function debug information.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Base class for the full range of assembler expressions which are needed for parsing.
void computeCallSiteTable(SmallVectorImpl< CallSiteEntry > &CallSites, const SmallVectorImpl< const LandingPadInfo *> &LandingPads, const SmallVectorImpl< unsigned > &FirstActions) override
Compute the call-site table.
Context object for machine code objects.
This structure is used to retain landing pad info for the current function.
static const MCBinaryExpr * createSub(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
void tidyLandingPads(DenseMap< MCSymbol *, uintptr_t > *LPMap=nullptr, bool TidyIfNoBeginLabels=true)
Remap landing pad labels and remove any deleted landing pads.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
Analysis containing CSE Info
AsmPrinter * Asm
Target of directive emission.
const std::vector< LandingPadInfo > & getLandingPads() const
Return a reference to the landing pad info for the current function.
unsigned getWasmLandingPadIndex(const MachineBasicBlock *LPad) const
Get the index in wasm EH for a given landing pad.
virtual void markFunctionEnd() override
MachineBasicBlock * LandingPadBlock
bool hasWasmLandingPadIndex(const MachineBasicBlock *LPad) const
Returns true if the landing pad has an associate index in wasm EH.
void endModule() override
Emit all sections that should come after the content.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
MCSymbol * emitExceptionTable()
Emit landing pads and actions.
void getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV, bool CannotUsePrivateLabel) const
Print the appropriate prefix and the specified global variable's name.
const DataLayout & getDataLayout() const
Return information about data layout.
MCSymbol * createTempSymbol(const Twine &Name) const