1 //===- MCWinEH.h - Windows Unwinding Support --------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_MC_MCWINEH_H
11 #define LLVM_MC_MCWINEH_H
20 const MCSymbol *Label;
21 const unsigned Offset;
22 const unsigned Register;
23 const unsigned Operation;
25 Instruction(unsigned Op, MCSymbol *L, unsigned Reg, unsigned Off)
26 : Label(L), Offset(Off), Register(Reg), Operation(Op) {}
30 const MCSymbol *Begin;
32 const MCSymbol *ExceptionHandler;
33 const MCSymbol *Function;
34 const MCSymbol *PrologEnd;
35 const MCSymbol *Symbol;
38 bool HandlesExceptions;
41 const FrameInfo *ChainedParent;
42 std::vector<Instruction> Instructions;
45 : Begin(nullptr), End(nullptr), ExceptionHandler(nullptr),
46 Function(nullptr), PrologEnd(nullptr), Symbol(nullptr),
47 HandlesUnwind(false), HandlesExceptions(false), LastFrameInst(-1),
48 ChainedParent(nullptr), Instructions() {}
49 FrameInfo(const MCSymbol *Function, const MCSymbol *BeginFuncEHLabel)
50 : Begin(BeginFuncEHLabel), End(nullptr), ExceptionHandler(nullptr),
51 Function(Function), PrologEnd(nullptr), Symbol(nullptr),
52 HandlesUnwind(false), HandlesExceptions(false), LastFrameInst(-1),
53 ChainedParent(nullptr), Instructions() {}
54 FrameInfo(const MCSymbol *Function, const MCSymbol *BeginFuncEHLabel,
55 const FrameInfo *ChainedParent)
56 : Begin(BeginFuncEHLabel), End(nullptr), ExceptionHandler(nullptr),
57 Function(Function), PrologEnd(nullptr), Symbol(nullptr),
58 HandlesUnwind(false), HandlesExceptions(false), LastFrameInst(-1),
59 ChainedParent(ChainedParent), Instructions() {}