diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index ed631b78fca..8df9c3b05cd 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -40,23 +40,23 @@ GenerateDwarfTypeUnits("generate-type-units", cl::Hidden, cl::init(false)); /// Unit - Unit constructor. -DwarfUnit::DwarfUnit(unsigned UID, DIE *D, AsmPrinter *A, DwarfDebug *DW, - DwarfFile *DWU) - : UniqueID(UID), UnitDie(D), DebugInfoOffset(0), Asm(A), DD(DW), DU(DWU), - IndexTyDie(0), Section(0), Skeleton(0) { +DwarfUnit::DwarfUnit(unsigned UID, DIE *D, DICompileUnit Node, AsmPrinter *A, + DwarfDebug *DW, DwarfFile *DWU) + : UniqueID(UID), Node(Node), UnitDie(D), DebugInfoOffset(0), Asm(A), DD(DW), + DU(DWU), IndexTyDie(0), Section(0), Skeleton(0) { DIEIntegerOne = new (DIEValueAllocator) DIEInteger(1); } DwarfCompileUnit::DwarfCompileUnit(unsigned UID, DIE *D, DICompileUnit Node, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU) - : DwarfUnit(UID, D, A, DW, DWU), Node(Node) { + : DwarfUnit(UID, D, Node, A, DW, DWU) { insertDIE(Node, D); } DwarfTypeUnit::DwarfTypeUnit(unsigned UID, DIE *D, uint16_t Language, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU) - : DwarfUnit(UID, D, A, DW, DWU), Language(Language) {} + : DwarfUnit(UID, D, DICompileUnit(), A, DW, DWU), Language(Language) {} /// ~Unit - Destructor for compile unit. DwarfUnit::~DwarfUnit() { diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.h b/lib/CodeGen/AsmPrinter/DwarfUnit.h index cba15fc9a82..524cdc1b59f 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -65,6 +65,9 @@ protected: /// UniqueID - a numeric ID unique among all CUs in the module unsigned UniqueID; + /// Node - MDNode for the compile unit. + DICompileUnit Node; + /// Unit debug information entry. const OwningPtr UnitDie; @@ -146,8 +149,8 @@ protected: /// Skeleton unit associated with this unit. DwarfUnit *Skeleton; - DwarfUnit(unsigned UID, DIE *D, AsmPrinter *A, DwarfDebug *DW, - DwarfFile *DWU); + DwarfUnit(unsigned UID, DIE *D, DICompileUnit CU, AsmPrinter *A, + DwarfDebug *DW, DwarfFile *DWU); public: virtual ~DwarfUnit(); @@ -216,6 +219,7 @@ public: // Accessors. unsigned getUniqueID() const { return UniqueID; } virtual uint16_t getLanguage() const = 0; + DICompileUnit getNode() const { return Node; } DIE *getUnitDie() const { return UnitDie.get(); } const StringMap &getGlobalNames() const { return GlobalNames; } const StringMap &getGlobalTypes() const { return GlobalTypes; } @@ -530,13 +534,9 @@ private: }; class DwarfCompileUnit : public DwarfUnit { - /// Node - MDNode for the compile unit. - DICompileUnit Node; - public: DwarfCompileUnit(unsigned UID, DIE *D, DICompileUnit Node, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU); - DICompileUnit getNode() const { return Node; } virtual ~DwarfCompileUnit() LLVM_OVERRIDE; /// createGlobalVariableDIE - create global variable DIE.