Revert "Recommit r212203: Don't try to construct debug LexicalScopes hierarchy for...
[oota-llvm.git] / lib / CodeGen / AsmPrinter / DwarfDebug.h
index 88b8a674b3e19c6a25a693800fb7d1c93b7dab56..f2aa80845a05eb962eb1280bca3f7dbde3b8ae29 100644 (file)
@@ -72,25 +72,21 @@ class DbgVariable {
   DIVariable Var;             // Variable Descriptor.
   DIE *TheDIE;                // Variable DIE.
   unsigned DotDebugLocOffset; // Offset in DotDebugLocEntries.
-  DbgVariable *AbsVar;        // Corresponding Abstract variable, if any.
   const MachineInstr *MInsn;  // DBG_VALUE instruction of the variable.
   int FrameIndex;
   DwarfDebug *DD;
 
 public:
   /// Construct a DbgVariable from a DIVariable.
-  /// AbstractVar may be NULL.
-  DbgVariable(DIVariable V, DbgVariable *AbstractVar, DwarfDebug *DD)
-      : Var(V), TheDIE(nullptr), DotDebugLocOffset(~0U), AbsVar(AbstractVar),
-        MInsn(nullptr), FrameIndex(~0), DD(DD) {}
+  DbgVariable(DIVariable V, DwarfDebug *DD)
+      : Var(V), TheDIE(nullptr), DotDebugLocOffset(~0U), MInsn(nullptr),
+        FrameIndex(~0), DD(DD) {}
 
   /// Construct a DbgVariable from a DEBUG_VALUE.
   /// AbstractVar may be NULL.
-  DbgVariable(const MachineInstr *DbgValue, DbgVariable *AbstractVar,
-              DwarfDebug *DD)
-    : Var(DbgValue->getDebugVariable()),
-      TheDIE(nullptr), DotDebugLocOffset(~0U), AbsVar(AbstractVar),
-      MInsn(DbgValue), FrameIndex(~0), DD(DD) {}
+  DbgVariable(const MachineInstr *DbgValue, DwarfDebug *DD)
+      : Var(DbgValue->getDebugVariable()), TheDIE(nullptr),
+        DotDebugLocOffset(~0U), MInsn(DbgValue), FrameIndex(~0), DD(DD) {}
 
   // Accessors.
   DIVariable getVariable() const { return Var; }
@@ -99,7 +95,6 @@ public:
   void setDotDebugLocOffset(unsigned O) { DotDebugLocOffset = O; }
   unsigned getDotDebugLocOffset() const { return DotDebugLocOffset; }
   StringRef getName() const { return Var.getName(); }
-  DbgVariable *getAbstractVariable() const { return AbsVar; }
   const MachineInstr *getMInsn() const { return MInsn; }
   int getFrameIndex() const { return FrameIndex; }
   void setFrameIndex(int FI) { FrameIndex = FI; }
@@ -346,10 +341,12 @@ class DwarfDebug : public AsmPrinterHandler {
   /// \brief Find abstract variable associated with Var.
   DbgVariable *getExistingAbstractVariable(const DIVariable &DV,
                                            DIVariable &Cleansed);
-  DbgVariable *createAbstractVariable(DIVariable &DV, LexicalScope *Scope);
-  DbgVariable *getOrCreateAbstractVariable(DIVariable &Var,
-                                           const MDNode *Scope);
-  DbgVariable *findAbstractVariable(DIVariable &Var, const MDNode *Scope);
+  DbgVariable *getExistingAbstractVariable(const DIVariable &DV);
+  void createAbstractVariable(const DIVariable &DV, LexicalScope *Scope);
+  void ensureAbstractVariableIsCreated(const DIVariable &Var,
+                                       const MDNode *Scope);
+  void ensureAbstractVariableIsCreatedIfScoped(const DIVariable &Var,
+                                               const MDNode *Scope);
 
   /// \brief Find DIE for the given subprogram and attach appropriate
   /// DW_AT_low_pc and DW_AT_high_pc attributes. If there are global