45 "non-EH CFI not yet supported in prologue with EHABI lowering");
67 bool forceEmitPersonality =
70 bool shouldEmitPersonality = forceEmitPersonality ||
73 !shouldEmitPersonality)
75 else if (shouldEmitPersonality) {
94 void ARMException::emitTypeInfos(
unsigned TTypeEncoding,
97 const std::vector<const GlobalValue *> &TypeInfos = MF->
getTypeInfos();
98 const std::vector<unsigned> &FilterIds = MF->
getFilterIds();
104 if (VerboseAsm && !TypeInfos.empty()) {
107 Entry = TypeInfos.size();
119 if (VerboseAsm && !FilterIds.empty()) {
124 for (std::vector<unsigned>::const_iterator
125 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.
This class represents lattice values for constants.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
bool needsOnlyDebugCFIMoves() const
Returns false if needsCFIMoves() == CFI_M_EH for any function in the module.
CFIMoveType needsCFIMoves() const
Target specific streamer interface.
bool shouldEmitCFI
Per-function flag to indicate if frame CFI info should be emitted.
MachineFunction * MF
The current machine function.
setjmp/longjmp based exceptions
virtual void emitPersonality(const MCSymbol *Personality)
const std::vector< unsigned > & getFilterIds() const
Return a reference to the typeids encoding filters used in the current function.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
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()))
bool hasPersonalityFn() const
Check whether this function has a personality function.
virtual void emitCantUnwind()
void endFunction(const MachineFunction *) override
Gather and emit post-function exception information.
void beginFunction(const MachineFunction *MF) override
Gather pre-function exception information.
const MCAsmInfo * MAI
Target Asm Printer information.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
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 Constant * stripPointerCasts() const
AsmPrinter * Asm
Target of directive emission.
bool hasEmittedCFISections
Per-module flag to indicate if .cfi_section has beeen emitted.
virtual void emitFnStart()
const std::vector< LandingPadInfo > & getLandingPads() const
Return a reference to the landing pad info for the current function.
MCSymbol * getSymbol(const GlobalValue *GV) const
Module.h This file contains the declarations for the Module class.
void EmitTTypeReference(const GlobalValue *GV, unsigned Encoding) const
Emit reference to a ttype global with a specified encoding.
const Function & getFunction() const
Return the LLVM function that this machine code represents.
bool needsUnwindTableEntry() const
True if this function needs an unwind table.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
MCSymbol * emitExceptionTable()
Emit landing pads and actions.
virtual void emitHandlerData()
Constant * getPersonalityFn() const
Get the personality function associated with this function.
ExceptionHandling getExceptionHandlingType() const
const std::vector< const GlobalValue * > & getTypeInfos() const
Return a reference to the C++ typeinfo for the current function.
bool isNoOpWithoutInvoke(EHPersonality Pers)
Return true if this personality may be safely removed if there are no invoke instructions remaining i...
ARMException(AsmPrinter *A)