diff options
| author | David Blaikie <dblaikie@gmail.com> | 2017-04-22 02:18:00 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2017-04-22 02:18:00 +0000 |
| commit | c0bb21f38ea0e3bb545a0ee1f69692439460e9fb (patch) | |
| tree | 9005c6f0cf42a77c7640e4dbbca897197e67d91d | |
| parent | de06ec544939c9a2d2a9f2bb6fd67b8091208be2 (diff) | |
| download | bcm5719-llvm-c0bb21f38ea0e3bb545a0ee1f69692439460e9fb.tar.gz bcm5719-llvm-c0bb21f38ea0e3bb545a0ee1f69692439460e9fb.zip | |
Remove the unnecessary virtual dtor from the DIEUnit hierarchy (in favor of protected dtor in the base, final derived classes with public non-virtual dtors)
These objects are never polymorphically owned/destroyed, so the virtual
dtor was unnecessary.
llvm-svn: 301068
| -rw-r--r-- | llvm/include/llvm/CodeGen/DIE.h | 9 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h | 2 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h | 6 | ||||
| -rw-r--r-- | llvm/tools/dsymutil/DwarfLinker.cpp | 4 | ||||
| -rw-r--r-- | llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h | 2 |
5 files changed, 15 insertions, 8 deletions
diff --git a/llvm/include/llvm/CodeGen/DIE.h b/llvm/include/llvm/CodeGen/DIE.h index 95c4b4248bb..aa6a26fe1c3 100644 --- a/llvm/include/llvm/CodeGen/DIE.h +++ b/llvm/include/llvm/CodeGen/DIE.h @@ -793,6 +793,9 @@ class DIEUnit { uint32_t Length; /// The length in bytes of all of the DIEs in this unit. const uint16_t Version; /// The Dwarf version number for this unit. const uint8_t AddrSize; /// The size in bytes of an address for this unit. +protected: + ~DIEUnit() = default; + public: DIEUnit(uint16_t Version, uint8_t AddrSize, dwarf::Tag UnitTag); DIEUnit(const DIEUnit &RHS) = delete; @@ -822,7 +825,11 @@ public: const DIE &getUnitDie() const { return Die; } }; - +struct BasicDIEUnit final : DIEUnit { + BasicDIEUnit(uint16_t Version, uint8_t AddrSize, dwarf::Tag UnitTag) + : DIEUnit(Version, AddrSize, UnitTag) {} +}; + //===--------------------------------------------------------------------===// /// DIELoc - Represents an expression location. // diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h index 9a64b4b76b0..20a415150b4 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h @@ -28,7 +28,7 @@ class DwarfFile; class MCSymbol; class LexicalScope; -class DwarfCompileUnit : public DwarfUnit { +class DwarfCompileUnit final : public DwarfUnit { /// A numeric ID unique among all CUs in the module unsigned UniqueID; diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h index d626ef920f9..d141acce812 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -104,8 +104,6 @@ protected: bool applySubprogramDefinitionAttributes(const DISubprogram *SP, DIE &SPDie); public: - virtual ~DwarfUnit(); - // Accessors. AsmPrinter* getAsmPrinter() const { return Asm; } uint16_t getLanguage() const { return CUNode->getSourceLanguage(); } @@ -289,6 +287,8 @@ public: void constructTypeDIE(DIE &Buffer, const DICompositeType *CTy); protected: + ~DwarfUnit(); + /// Create new static data member DIE. DIE *getOrCreateStaticMemberDIE(const DIDerivedType *DT); @@ -337,7 +337,7 @@ private: virtual bool isDwoUnit() const = 0; }; -class DwarfTypeUnit : public DwarfUnit { +class DwarfTypeUnit final : public DwarfUnit { uint64_t TypeSignature; const DIE *Ty; DwarfCompileUnit &CU; diff --git a/llvm/tools/dsymutil/DwarfLinker.cpp b/llvm/tools/dsymutil/DwarfLinker.cpp index 6ee052f101f..ce991290d6a 100644 --- a/llvm/tools/dsymutil/DwarfLinker.cpp +++ b/llvm/tools/dsymutil/DwarfLinker.cpp @@ -223,7 +223,7 @@ public: DIE *getOutputUnitDIE() const { if (NewUnit) - return &const_cast<DIEUnit &>(*NewUnit).getUnitDie(); + return &const_cast<BasicDIEUnit &>(*NewUnit).getUnitDie(); return nullptr; } @@ -333,7 +333,7 @@ private: DWARFUnit &OrigUnit; unsigned ID; std::vector<DIEInfo> Info; ///< DIE info indexed by DIE index. - Optional<DIEUnit> NewUnit; + Optional<BasicDIEUnit> NewUnit; uint64_t StartOffset; uint64_t NextUnitOffset; diff --git a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h index 966725b4fa4..76665e5193e 100644 --- a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h +++ b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h @@ -138,7 +138,7 @@ public: /// contained inside this class. class CompileUnit { Generator &DG; - DIEUnit DU; + BasicDIEUnit DU; public: CompileUnit(Generator &D, uint16_t V, uint8_t A) |

