52 "non-EH CFI not yet supported in prologue with EHABI lowering");
74 bool forceEmitPersonality =
77 bool shouldEmitPersonality = forceEmitPersonality ||
80 !shouldEmitPersonality)
82 else if (shouldEmitPersonality) {
101 void ARMException::emitTypeInfos(
unsigned TTypeEncoding) {
103 const std::vector<const GlobalValue *> &TypeInfos = MF->
getTypeInfos();
104 const std::vector<unsigned> &FilterIds = MF->
getFilterIds();
110 if (VerboseAsm && !TypeInfos.empty()) {
113 Entry = TypeInfos.size();
123 if (VerboseAsm && !FilterIds.empty()) {
128 for (std::vector<unsigned>::const_iterator
129 I = FilterIds.begin(),
E = FilterIds.end();
I <
E; ++
I) {
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 ...
Target specific streamer interface.
const MachineFunction * MF
The current machine function.
const std::vector< LandingPadInfo > & getLandingPads() const
Return a reference to the landing pad info for the current function.
bool shouldEmitCFI
Per-function flag to indicate if frame CFI info should be emitted.
const std::vector< unsigned > & getFilterIds() const
Return a reference to the typeids encoding filters used in the current function.
const Function * getFunction() const
getFunction - Return the LLVM function that this machine code represents
setjmp/longjmp based exceptions
const std::vector< const GlobalValue * > & getTypeInfos() const
Return a reference to the C++ typeinfo for the current function.
virtual void emitPersonality(const MCSymbol *Personality)
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Constant * getPersonalityFn() const
Get the personality function associated with this function.
TypeID
Definitions of all of the base types for the Type system.
auto reverse(ContainerTy &&C, typename std::enable_if< has_rbegin< ContainerTy >::value >::type *=nullptr) -> decltype(make_range(C.rbegin(), C.rend()))
void emitExceptionTable()
Emit landing pads and actions.
bool needsOnlyDebugCFIMoves() const
Returns false if needsCFIMoves() == CFI_M_EH for any function in the module.
virtual void emitCantUnwind()
void endFunction(const MachineFunction *) override
Gather and emit post-function exception information.
static GCRegistry::Add< CoreCLRGC > E("coreclr","CoreCLR-compatible GC")
void beginFunction(const MachineFunction *MF) override
Gather pre-function exception information.
Constant * stripPointerCasts()
const MCAsmInfo * MAI
Target Asm Printer information.
bool hasPersonalityFn() const
Check whether this function has a personality 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.
ExceptionHandling getExceptionHandlingType() const
AsmPrinter * Asm
Target of directive emission.
bool hasEmittedCFISections
Per-module flag to indicate if .cfi_section has beeen emitted.
virtual void emitFnStart()
Module.h This file contains the declarations for the Module class.
bool needsUnwindTableEntry() const
True if this function needs an unwind table.
void EmitTTypeReference(const GlobalValue *GV, unsigned Encoding) const
Emit reference to a ttype global with a specified encoding.
CFIMoveType needsCFIMoves()
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
virtual void emitHandlerData()
static GCRegistry::Add< ErlangGC > A("erlang","erlang-compatible garbage collector")
bool isNoOpWithoutInvoke(EHPersonality Pers)
Return true if this personality may be safely removed if there are no invoke instructions remaining i...
ARMException(AsmPrinter *A)