DebugInfo: Don't print DIEs multiple times.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139671 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/DebugInfo/DWARFCompileUnit.cpp b/lib/DebugInfo/DWARFCompileUnit.cpp
index 389de9d..224ae92 100644
--- a/lib/DebugInfo/DWARFCompileUnit.cpp
+++ b/lib/DebugInfo/DWARFCompileUnit.cpp
@@ -95,8 +95,7 @@
      << ")\n";
 
   extractDIEsIfNeeded(false);
-  for (unsigned i = 0, e = DieArray.size(); i != e; ++i)
-    DieArray[i].dump(OS, this, 10);
+  DieArray[0].dump(OS, this, -1U);
 }
 
 void DWARFCompileUnit::setDIERelations() {
diff --git a/lib/DebugInfo/DWARFDebugInfoEntry.cpp b/lib/DebugInfo/DWARFDebugInfoEntry.cpp
index bfe89dd..6923f6c 100644
--- a/lib/DebugInfo/DWARFDebugInfoEntry.cpp
+++ b/lib/DebugInfo/DWARFDebugInfoEntry.cpp
@@ -45,12 +45,10 @@
 
         const DWARFDebugInfoEntryMinimal *child = getFirstChild();
         if (recurseDepth > 0 && child) {
-          indent += 2;
           while (child) {
-            child->dump(OS, cu, recurseDepth-1, indent);
+            child->dump(OS, cu, recurseDepth-1, indent+2);
             child = child->getSibling();
           }
-          indent -= 2;
         }
       } else {
         OS << "Abbreviation code not found in 'debug_abbrev' class for code: "
diff --git a/lib/DebugInfo/DWARFDebugInfoEntry.h b/lib/DebugInfo/DWARFDebugInfoEntry.h
index 0b0a00c..5e7b89b 100644
--- a/lib/DebugInfo/DWARFDebugInfoEntry.h
+++ b/lib/DebugInfo/DWARFDebugInfoEntry.h
@@ -33,6 +33,9 @@
 
   const DWARFAbbreviationDeclaration *AbbrevDecl;
 public:
+  DWARFDebugInfoEntryMinimal()
+    : Offset(0), ParentIdx(0), SiblingIdx(0), AbbrevDecl(0) {}
+
   void dump(raw_ostream &OS, const DWARFCompileUnit *cu,
             unsigned recurseDepth, unsigned indent = 0) const;
   void dumpAttribute(raw_ostream &OS, const DWARFCompileUnit *cu,