remove unions from LLVM IR. They are severely buggy and not
[oota-llvm.git] / lib / CodeGen / AsmPrinter / DwarfException.h
index 0c53cd87924e19f6fb4c6787481bef3347172810..bc311e67054e0a1032c79792657abf765def10f1 100644 (file)
 #ifndef LLVM_CODEGEN_ASMPRINTER_DWARFEXCEPTION_H
 #define LLVM_CODEGEN_ASMPRINTER_DWARFEXCEPTION_H
 
-#include "llvm/CodeGen/AsmPrinter.h"
 #include "llvm/ADT/DenseMap.h"
-#include <string>
+#include <vector>
 
 namespace llvm {
 
+template <typename T> class SmallVectorImpl;
 struct LandingPadInfo;
 class MachineModuleInfo;
+class MachineMove;
+class MachineInstr;
+class MachineFunction;
 class MCAsmInfo;
 class MCExpr;
-class Timer;
-class raw_ostream;
+class MCSymbol;
+class Function;
+class AsmPrinter;
 
 //===----------------------------------------------------------------------===//
 /// DwarfException - Emits Dwarf exception handling directives.
@@ -33,16 +37,15 @@ class raw_ostream;
 class DwarfException {
   /// Asm - Target of Dwarf emission.
   AsmPrinter *Asm;
-public:
+
   /// MMI - Collected machine module information.
   MachineModuleInfo *MMI;
-private:
 
   struct FunctionEHFrameInfo {
     MCSymbol *FunctionEHSym;  // L_foo.eh
     unsigned Number;
     unsigned PersonalityIndex;
-    bool hasCalls;
+    bool adjustsStack;
     bool hasLandingPads;
     std::vector<MachineMove> Moves;
     const Function *function;
@@ -52,7 +55,7 @@ private:
                         const std::vector<MachineMove> &M,
                         const Function *f):
       FunctionEHSym(EHSym), Number(Num), PersonalityIndex(P),
-      hasCalls(hC), hasLandingPads(hL), Moves(M), function (f) { }
+      adjustsStack(hC), hasLandingPads(hL), Moves(M), function (f) { }
   };
 
   std::vector<FunctionEHFrameInfo> EHFrames;
@@ -78,9 +81,6 @@ private:
   /// should be emitted.
   bool shouldEmitMovesModule;
 
-  /// ExceptionTimer - Timer for the Dwarf exception writer.
-  Timer *ExceptionTimer;
-
   /// EmitCIE - Emit a Common Information Entry (CIE). This holds information
   /// that is shared among many Frame Description Entries.  There is at least
   /// one CIE in every non-empty .debug_frame section.
@@ -172,7 +172,7 @@ public:
   // Main entry points.
   //
   DwarfException(AsmPrinter *A);
-  virtual ~DwarfException();
+  ~DwarfException();
 
   /// EndModule - Emit all exception information that should come after the
   /// content.