14 #ifndef LLVM_CODEGEN_WINEHFUNCINFO_H
15 #define LLVM_CODEGEN_WINEHFUNCINFO_H
37 : StartBB(BB), Type(Type), EHState(-1), HandlerBlockOrFunc(nullptr) {}
63 NextBB(NextBB), ExceptionObjectVar(nullptr),
64 ExceptionObjectIndex(-1) {}
81 ReturnTargets = Targets;
95 const Value *ExceptionObjectVar;
96 int ExceptionObjectIndex;
111 SmallVectorImpl<std::unique_ptr<ActionHandler>> &Actions);
162 WinEHFuncInfo &FuncInfo);
165 #endif // LLVM_CODEGEN_WINEHFUNCINFO_H
ActionType getType() const
SmallVector< WinEHHandlerType, 1 > HandlerArray
ActionHandler(BasicBlock *BB, ActionType Type)
TinyPtrVector - This class is specialized for cases where there are normally 0 or 1 element in a vect...
BasicBlock * getNextBB() const
static bool classof(const ActionHandler *H)
void setEHState(int State)
TinyPtrVector< BasicBlock * > & getReturnTargets()
CleanupHandler(BasicBlock *BB)
int EHRegNodeEscapeIndex
localescape index of the 32-bit EH registration node.
void setHandlerBlockOrFunc(Constant *F)
DenseMap< const Function *, const InvokeInst * > LastInvoke
DenseMap< const LandingPadInst *, int > LandingPadStateMap
void setExceptionVar(const Value *Val)
DenseMap< const Function *, int > CatchHandlerParentFrameObjIdx
int UnwindHelpFrameOffset
LLVM Basic Block Representation.
The instances of the Type class are immutable: once they are created, they are never changed...
int getExceptionVarIndex() const
This is an important base class in LLVM.
static bool classof(const ActionHandler *H)
DenseMap< const Function *, int > CatchHandlerParentFrameObjOffset
const Value * getExceptionVar()
DenseMap< const Function *, int > CatchHandlerMaxState
void calculateWinCXXEHStateNumbers(const Function *ParentFn, WinEHFuncInfo &FuncInfo)
Analyze the IR in ParentFn and it's handlers to build WinEHFuncInfo, which describes the state number...
Constant * getHandlerBlockOrFunc()
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
CatchHandler(BasicBlock *BB, Constant *Selector, BasicBlock *NextBB)
void setExceptionVarIndex(int Index)
SmallVector< WinEHTryBlockMapEntry, 4 > TryBlockMap
GlobalVariable * TypeDescriptor
DenseMap< const Function *, bool > LastInvokeVisited
void setReturnTargets(TinyPtrVector< BasicBlock * > &Targets)
BasicBlock * getStartBlock() const
unsigned NumIPToStateFuncsVisited
DenseMap< const Function *, int > HandlerEnclosedState
SmallVector< std::pair< MCSymbol *, int >, 4 > IPToStateList
LLVM Value Representation.
Constant * getSelector() const
DenseMap< const Function *, int > HandlerBaseState
SmallVector< WinEHUnwindMapEntry, 4 > UnwindMap
void parseEHActions(const IntrinsicInst *II, SmallVectorImpl< std::unique_ptr< ActionHandler >> &Actions)
DenseMap< const Function *, const LandingPadInst * > RootLPad