mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-21 03:28:13 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301068 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9254ae141b
commit
a753d9a103
@ -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,6 +825,10 @@ 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.
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user