remove extra semicolon
[opencl/llvm.git] / lib / CodeGen / AsmPrinter / DwarfExpression.h
index 193f4307d881a54e2f18b25d7517ce00bc09a135..595ef30d112292ca1a3c2c45e6749f52b9b135d1 100644 (file)
@@ -24,13 +24,18 @@ class TargetMachine;
 /// independently of whether they are emitted into a DIE or into a .debug_loc
 /// entry.
 class DwarfExpression {
+protected:
   TargetMachine &TM;
 public:
   DwarfExpression(TargetMachine &TM) : TM(TM) {}
+  virtual ~DwarfExpression() {}
 
   virtual void EmitOp(uint8_t Op, const char* Comment = nullptr) = 0;
   virtual void EmitSigned(int Value) = 0;
   virtual void EmitUnsigned(unsigned Value) = 0;
+
+  virtual unsigned getFrameRegister() = 0;
+
   /// Emit a dwarf register operation.
   void AddReg(int DwarfReg, const char* Comment = nullptr);
   /// Emit an (double-)indirect dwarf register operation.
@@ -43,6 +48,10 @@ public:
   /// Emit a shift-right dwarf expression.
   void AddShr(unsigned ShiftBy);
 
+  /// Emit an indirect dwarf register operation for the given machine register.
+  /// Returns false if no DWARF register exists for MachineReg.
+  bool AddMachineRegIndirect(unsigned MachineReg, int Offset);
+
   /// \brief Emit a partial DWARF register operation.
   /// \param MLoc             the register
   /// \param PieceSize        size and