115869dc4ed8b728f2f569b6abbe023ef9c9beb6
[oota-llvm.git] / lib / CodeGen / AsmPrinter / DwarfException.h
1 //===-- DwarfException.h - Dwarf Exception Framework -----------*- C++ -*--===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains support for writing dwarf exception info into asm files.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef LLVM_LIB_CODEGEN_ASMPRINTER_DWARFEXCEPTION_H
15 #define LLVM_LIB_CODEGEN_ASMPRINTER_DWARFEXCEPTION_H
16
17 #include "EHStreamer.h"
18 #include "llvm/CodeGen/AsmPrinter.h"
19
20 namespace llvm {
21 class MachineFunction;
22 class ARMTargetStreamer;
23
24 class DwarfCFIException : public EHStreamer {
25   /// Per-function flag to indicate if .cfi_personality should be emitted.
26   bool shouldEmitPersonality;
27
28   /// Per-function flag to indicate if .cfi_lsda should be emitted.
29   bool shouldEmitLSDA;
30
31   /// Per-function flag to indicate if frame moves info should be emitted.
32   bool shouldEmitMoves;
33
34   AsmPrinter::CFIMoveType moveTypeModule;
35
36 public:
37   //===--------------------------------------------------------------------===//
38   // Main entry points.
39   //
40   DwarfCFIException(AsmPrinter *A);
41   virtual ~DwarfCFIException();
42
43   /// Emit all exception information that should come after the content.
44   void endModule() override;
45
46   /// Gather pre-function exception information.  Assumes being emitted
47   /// immediately after the function entry point.
48   void beginFunction(const MachineFunction *MF) override;
49
50   /// Gather and emit post-function exception information.
51   void endFunction(const MachineFunction *) override;
52 };
53
54 class ARMException : public EHStreamer {
55   void emitTypeInfos(unsigned TTypeEncoding) override;
56   ARMTargetStreamer &getTargetStreamer();
57
58   /// Per-function flag to indicate if frame CFI info should be emitted.
59   bool shouldEmitCFI;
60
61 public:
62   //===--------------------------------------------------------------------===//
63   // Main entry points.
64   //
65   ARMException(AsmPrinter *A);
66   virtual ~ARMException();
67
68   /// Emit all exception information that should come after the content.
69   void endModule() override;
70
71   /// Gather pre-function exception information.  Assumes being emitted
72   /// immediately after the function entry point.
73   void beginFunction(const MachineFunction *MF) override;
74
75   /// Gather and emit post-function exception information.
76   void endFunction(const MachineFunction *) override;
77 };
78 } // End of namespace llvm
79
80 #endif