From: Rafael Espindola Date: Wed, 7 Oct 2015 13:46:06 +0000 (+0000) Subject: Use non virtual destructors for sections. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c6f2e2a5847a477e80fc447b5fc976808ea92684;p=oota-llvm.git Use non virtual destructors for sections. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249548 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/MC/MCSection.h b/include/llvm/MC/MCSection.h index f5490fcd173..c049ad5455b 100644 --- a/include/llvm/MC/MCSection.h +++ b/include/llvm/MC/MCSection.h @@ -105,10 +105,9 @@ protected: MCSection(SectionVariant V, SectionKind K, MCSymbol *Begin); SectionVariant Variant; SectionKind Kind; + ~MCSection(); public: - virtual ~MCSection(); - SectionKind getKind() const { return Kind; } SectionVariant getVariant() const { return Variant; } diff --git a/include/llvm/MC/MCSectionCOFF.h b/include/llvm/MC/MCSectionCOFF.h index 7dcec1e2b27..d94682c8c38 100644 --- a/include/llvm/MC/MCSectionCOFF.h +++ b/include/llvm/MC/MCSectionCOFF.h @@ -21,7 +21,7 @@ namespace llvm { class MCSymbol; /// This represents a section on Windows -class MCSectionCOFF : public MCSection { +class MCSectionCOFF final : public MCSection { // The memory for this string is stored in the same MCContext as *this. StringRef SectionName; @@ -51,9 +51,10 @@ private: assert((Characteristics & 0x00F00000) == 0 && "alignment must not be set upon section creation"); } - ~MCSectionCOFF() override; public: + ~MCSectionCOFF(); + /// Decides whether a '.section' directive should be printed before the /// section name bool ShouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const; diff --git a/include/llvm/MC/MCSectionELF.h b/include/llvm/MC/MCSectionELF.h index 38740612edd..52e6d949376 100644 --- a/include/llvm/MC/MCSectionELF.h +++ b/include/llvm/MC/MCSectionELF.h @@ -27,7 +27,7 @@ class MCSymbol; /// This represents a section on linux, lots of unix variants and some bare /// metal systems. -class MCSectionELF final : public MCSection { +class MCSectionELF final : public MCSection { /// This is the name of the section. The referenced memory is owned by /// TargetLoweringObjectFileELF's ELFUniqueMap. StringRef SectionName; @@ -61,11 +61,12 @@ private: if (Group) Group->setIsSignature(); } - ~MCSectionELF() override; void setSectionName(StringRef Name) { SectionName = Name; } public: + ~MCSectionELF(); + /// Decides whether a '.section' directive should be printed before the /// section name bool ShouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const; diff --git a/include/llvm/MC/MCSectionMachO.h b/include/llvm/MC/MCSectionMachO.h index 860c27fa6e6..658dfcda726 100644 --- a/include/llvm/MC/MCSectionMachO.h +++ b/include/llvm/MC/MCSectionMachO.h @@ -22,7 +22,7 @@ namespace llvm { /// This represents a section on a Mach-O system (used by Mac OS X). On a Mac /// system, these are also described in /usr/include/mach-o/loader.h. -class MCSectionMachO : public MCSection { +class MCSectionMachO final : public MCSection { char SegmentName[16]; // Not necessarily null terminated! char SectionName[16]; // Not necessarily null terminated! diff --git a/lib/Target/NVPTX/NVPTXISelLowering.cpp b/lib/Target/NVPTX/NVPTXISelLowering.cpp index 3f1bde4586d..b5ebc91c692 100644 --- a/lib/Target/NVPTX/NVPTXISelLowering.cpp +++ b/lib/Target/NVPTX/NVPTXISelLowering.cpp @@ -4566,25 +4566,25 @@ void NVPTXTargetLowering::ReplaceNodeResults( void NVPTXSection::anchor() {} NVPTXTargetObjectFile::~NVPTXTargetObjectFile() { - delete TextSection; - delete DataSection; - delete BSSSection; - delete ReadOnlySection; - - delete StaticCtorSection; - delete StaticDtorSection; - delete LSDASection; - delete EHFrameSection; - delete DwarfAbbrevSection; - delete DwarfInfoSection; - delete DwarfLineSection; - delete DwarfFrameSection; - delete DwarfPubTypesSection; - delete DwarfDebugInlineSection; - delete DwarfStrSection; - delete DwarfLocSection; - delete DwarfARangesSection; - delete DwarfRangesSection; + delete static_cast(TextSection); + delete static_cast(DataSection); + delete static_cast(BSSSection); + delete static_cast(ReadOnlySection); + + delete static_cast(StaticCtorSection); + delete static_cast(StaticDtorSection); + delete static_cast(LSDASection); + delete static_cast(EHFrameSection); + delete static_cast(DwarfAbbrevSection); + delete static_cast(DwarfInfoSection); + delete static_cast(DwarfLineSection); + delete static_cast(DwarfFrameSection); + delete static_cast(DwarfPubTypesSection); + delete static_cast(DwarfDebugInlineSection); + delete static_cast(DwarfStrSection); + delete static_cast(DwarfLocSection); + delete static_cast(DwarfARangesSection); + delete static_cast(DwarfRangesSection); } MCSection * diff --git a/lib/Target/NVPTX/NVPTXSection.h b/lib/Target/NVPTX/NVPTXSection.h index 3108ce2faa0..45a7309479e 100644 --- a/lib/Target/NVPTX/NVPTXSection.h +++ b/lib/Target/NVPTX/NVPTXSection.h @@ -22,11 +22,11 @@ namespace llvm { /// Represents a section in PTX PTX does not have sections. We create this class /// in order to use the ASMPrint interface. /// -class NVPTXSection : public MCSection { +class NVPTXSection final : public MCSection { virtual void anchor(); public: NVPTXSection(SectionVariant V, SectionKind K) : MCSection(V, K, nullptr) {} - virtual ~NVPTXSection() {} + ~NVPTXSection() {} /// Override this as NVPTX has its own way of printing switching /// to a section.