diff options
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index 6356a65b50d3..4e1a1b1e068d 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -65,19 +65,21 @@ class Module; /// such that it could levarage polymorphism to extract common code for /// DbgVariable and DbgLabel. class DbgEntity { - const DINode *Entity; - const DILocation *InlinedAt; - DIE *TheDIE = nullptr; - unsigned SubclassID; - public: enum DbgEntityKind { DbgVariableKind, DbgLabelKind }; - DbgEntity(const DINode *N, const DILocation *IA, unsigned ID) - : Entity(N), InlinedAt(IA), SubclassID(ID) {} +private: + const DINode *Entity; + const DILocation *InlinedAt; + DIE *TheDIE = nullptr; + const DbgEntityKind SubclassID; + +public: + DbgEntity(const DINode *N, const DILocation *IA, DbgEntityKind ID) + : Entity(N), InlinedAt(IA), SubclassID(ID) {} virtual ~DbgEntity() {} /// Accessors. @@ -85,19 +87,18 @@ public: const DINode *getEntity() const { return Entity; } const DILocation *getInlinedAt() const { return InlinedAt; } DIE *getDIE() const { return TheDIE; } - unsigned getDbgEntityID() const { return SubclassID; } + DbgEntityKind getDbgEntityID() const { return SubclassID; } /// @} void setDIE(DIE &D) { TheDIE = &D; } static bool classof(const DbgEntity *N) { switch (N->getDbgEntityID()) { - default: - return false; case DbgVariableKind: case DbgLabelKind: return true; } + llvm_unreachable("Invalid DbgEntityKind"); } }; @@ -471,9 +472,6 @@ private: /// Construct a DIE for this abstract scope. void constructAbstractSubprogramScopeDIE(DwarfCompileUnit &SrcCU, LexicalScope *Scope); - /// Construct a DIE for the subprogram definition \p SP and return it. - DIE &constructSubprogramDefinitionDIE(const DISubprogram *SP); - /// Construct DIEs for call site entries describing the calls in \p MF. void constructCallSiteEntryDIEs(const DISubprogram &SP, DwarfCompileUnit &CU, DIE &ScopeDIE, const MachineFunction &MF); @@ -615,7 +613,7 @@ private: DenseSet<InlinedEntity> &ProcessedVars); /// Build the location list for all DBG_VALUEs in the - /// function that describe the same variable. If the resulting + /// function that describe the same variable. If the resulting /// list has only one entry that is valid for entire variable's /// scope return true. bool buildLocationList(SmallVectorImpl<DebugLocEntry> &DebugLoc, @@ -635,6 +633,9 @@ protected: /// Gather and emit post-function debug information. void endFunctionImpl(const MachineFunction *MF) override; + /// Get Dwarf compile unit ID for line table. + unsigned getDwarfCompileUnitIDForLineTable(const DwarfCompileUnit &CU); + void skippedNonDebugFunction() override; public: @@ -781,6 +782,9 @@ public: const DwarfCompileUnit *getPrevCU() const { return PrevCU; } void setPrevCU(const DwarfCompileUnit *PrevCU) { this->PrevCU = PrevCU; } + /// Terminate the line table by adding the last range label. + void terminateLineTable(const DwarfCompileUnit *CU); + /// Returns the entries for the .debug_loc section. const DebugLocStream &getDebugLocs() const { return DebugLocs; } |
