82 for (
size_t i = 0, e = Personalities.size(); i != e; ++i) {
83 if (!Personalities[i])
91 shouldEmitMoves = shouldEmitPersonality = shouldEmitLSDA =
false;
102 moveTypeModule = MoveType;
114 bool forceEmitPersonality =
122 shouldEmitPersonality =
123 (forceEmitPersonality ||
128 shouldEmitLSDA = shouldEmitPersonality &&
138 if (!shouldEmitPersonality)
143 if (forceEmitPersonality)
160 if (!shouldEmitPersonality)
std::unique_ptr< MCStreamer > OutStreamer
This is the MCStreamer object for the file we are generating.
MCSymbol * getSymbol(const GlobalValue *GV) const
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
bool shouldEmitCFI
Per-function flag to indicate if frame CFI info should be emitted.
const Function * getFunction() const
getFunction - Return the LLVM function that this machine code represents
DwarfCFIException(AsmPrinter *A)
MachineModuleInfo * MMI
Collected machine module information.
Emits exception handling directives.
DwarfCFIExceptionBase(AsmPrinter *A)
void endFunction(const MachineFunction *) override
Gather and emit post-function exception information.
~DwarfCFIException() override
void emitExceptionTable()
Emit landing pads and actions.
Mangler * Mang
Name-mangler for global names.
void addPersonality(MachineBasicBlock *LandingPad, const Function *Personality)
addPersonality - Provide the personality function for the exception information.
void beginFunction(const MachineFunction *MF) override
Gather pre-function exception information.
Constant * stripPointerCasts()
const MCAsmInfo * MAI
Target Asm Printer information.
TargetMachine & TM
Target machine description.
bool hasPersonalityFn() const
Get the personality function associated with this function.
This class is intended to be used as a driving class for all asm writers.
EHPersonality classifyEHPersonality(const Value *Pers)
See if the given exception handling personality function is one that we understand.
const std::vector< const Function * > & getPersonalities() const
getPersonalities - Return array of personality functions ever seen.
void markFunctionEnd() override
AsmPrinter * Asm
Target of directive emission.
unsigned getLSDAEncoding() const
Module.h This file contains the declarations for the Module class.
bool needsUnwindTableEntry() const
True if this function needs an unwind table.
unsigned getPersonalityEncoding() const
virtual void emitPersonalityValue(MCStreamer &Streamer, const TargetMachine &TM, const MCSymbol *Sym) const
MCSymbol * getCurExceptionSym()
void endModule() override
Emit all exception information that should come after the content.
Constant * getPersonalityFn() const
const std::vector< LandingPadInfo > & getLandingPads() const
getLandingPads - Return a reference to the landing pad info for the current function.
CFIMoveType needsCFIMoves()
void TidyLandingPads(DenseMap< MCSymbol *, uintptr_t > *LPMap=nullptr)
TidyLandingPads - Remap landing pad labels and remove any deleted landing pads.
const TargetLoweringObjectFile & getObjFileLowering() const
Return information about object file lowering.
virtual MCSymbol * getCFIPersonalitySymbol(const GlobalValue *GV, Mangler &Mang, const TargetMachine &TM, MachineModuleInfo *MMI) const
bool usesCFIForEH() const
Returns true if the exception handling method for the platform uses call frame information to unwind...
bool isNoOpWithoutInvoke(EHPersonality Pers)
Return true if this personality may be safely removed if there are no invoke instructions remaining i...
const Function * getPersonality() const
getPersonality - Return a personality function if available.