Make DwarfCompileUnit::Skeleton more narrowly typed (DwarfCompileUnit* instead of...
[oota-llvm.git] / lib / CodeGen / AsmPrinter / DwarfCompileUnit.h
index 9805fb4874e40fd60dfabd8629327a51cc1f9e06..f0799304316e912543e671f09fb295535445e055 100644 (file)
@@ -33,6 +33,9 @@ class DwarfCompileUnit : public DwarfUnit {
   /// the need to search for it in applyStmtList.
   unsigned stmtListIndex;
 
+  /// Skeleton unit associated with this unit.
+  DwarfCompileUnit *Skeleton;
+
   /// \brief Construct a DIE for the given DbgVariable without initializing the
   /// DbgVariable's DIE reference.
   std::unique_ptr<DIE> constructVariableDIEImpl(const DbgVariable &DV,
@@ -43,7 +46,7 @@ public:
                    DwarfDebug *DW, DwarfFile *DWU);
 
   DwarfCompileUnit *getSkeleton() const {
-    return static_cast<DwarfCompileUnit *>(Skeleton);
+    return Skeleton;
   }
 
   void initStmtList(MCSymbol *DwarfLineSectionSym);
@@ -134,6 +137,25 @@ public:
   void finishSubprogramDefinition(DISubprogram SP);
 
   void collectDeadVariables(DISubprogram SP);
+
+  /// If there's a skeleton then return the begin label for the skeleton unit,
+  /// otherwise return the local label for this unit.
+  MCSymbol *getLocalLabelBegin() const {
+    if (Skeleton)
+      return Skeleton->getLabelBegin();
+    return getLabelBegin();
+  }
+
+  /// If there's a skeleton then return the section symbol for the skeleton
+  /// unit, otherwise return the section symbol for this unit.
+  MCSymbol *getLocalSectionSym() const {
+    if (Skeleton)
+      return Skeleton->getSectionSym();
+    return getSectionSym();
+  }
+
+  /// Set the skeleton unit associated with this unit.
+  void setSkeleton(DwarfCompileUnit &Skel) { Skeleton = &Skel; }
 };
 
 } // end llvm namespace