37 "non-EH CFI not yet supported in prologue with EHABI lowering");
40 if (!hasEmittedCFISections) {
43 hasEmittedCFISections =
true;
62 if (
F.hasPersonalityFn())
63 Per = dyn_cast<Function>(
F.getPersonalityFn()->stripPointerCasts());
64 bool forceEmitPersonality =
66 F.needsUnwindTableEntry();
67 bool shouldEmitPersonality = forceEmitPersonality ||
70 !shouldEmitPersonality)
72 else if (shouldEmitPersonality) {
90void ARMException::emitTypeInfos(
unsigned TTypeEncoding,
93 const std::vector<const GlobalValue *> &TypeInfos = MF->
getTypeInfos();
94 const std::vector<unsigned> &FilterIds = MF->
getFilterIds();
100 if (VerboseAsm && !TypeInfos.empty()) {
103 Entry = TypeInfos.size();
115 if (VerboseAsm && !FilterIds.empty()) {
120 for (std::vector<unsigned>::const_iterator
121 I = FilterIds.begin(), E = FilterIds.end();
I < E; ++
I) {
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
ARMException(AsmPrinter *A)
void endFunction(const MachineFunction *) override
Gather and emit post-function exception information.
void markFunctionEnd() override
void beginFunction(const MachineFunction *MF) override
Gather pre-function exception information.
virtual void emitFnStart()
virtual void emitPersonality(const MCSymbol *Personality)
virtual void emitHandlerData()
virtual void emitCantUnwind()
This class is intended to be used as a driving class for all asm writers.
MCSymbol * getSymbol(const GlobalValue *GV) const
CFISection getModuleCFISectionType() const
Get the CFISection type for the module.
virtual void emitTTypeReference(const GlobalValue *GV, unsigned Encoding)
Emit reference to a ttype global with a specified encoding.
const MCAsmInfo * MAI
Target Asm Printer information.
MachineFunction * MF
The current machine function.
CFISection getFunctionCFISectionType(const Function &F) const
Get the CFISection type for a function.
std::unique_ptr< MCStreamer > OutStreamer
This is the MCStreamer object for the file we are generating.
@ Debug
Emit .debug_frame.
Emits exception handling directives.
AsmPrinter * Asm
Target of directive emission.
MCSymbol * emitExceptionTable()
Emit landing pads and actions.
bool needsUnwindTableEntry() const
True if this function needs an unwind table.
ExceptionHandling getExceptionHandlingType() const
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Target specific streamer interface.
const std::vector< unsigned > & getFilterIds() const
Return a reference to the typeids encoding filters used in the current function.
const std::vector< const GlobalValue * > & getTypeInfos() const
Return a reference to the C++ typeinfo for the current function.
Function & getFunction()
Return the LLVM function that this machine code represents.
const std::vector< LandingPadInfo > & getLandingPads() const
Return a reference to the landing pad info for 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.
This is an optimization pass for GlobalISel generic memory operations.
bool isNoOpWithoutInvoke(EHPersonality Pers)
Return true if this personality may be safely removed if there are no invoke instructions remaining i...
auto reverse(ContainerTy &&C)
EHPersonality classifyEHPersonality(const Value *Pers)
See if the given exception handling personality function is one that we understand.