From: Benjamin Kramer Date: Thu, 21 Aug 2014 11:22:05 +0000 (+0000) Subject: Make format_object_base's destructor protected and non-virtual. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=67e5178cef7d7c83ff76b611570abda4350b515d;p=oota-llvm.git Make format_object_base's destructor protected and non-virtual. It's not meant to be used with operator delete and this avoids emitting virtual dtors for every derived format object. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216170 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Support/Format.h b/include/llvm/Support/Format.h index b713cc72e85..c0f68f2b482 100644 --- a/include/llvm/Support/Format.h +++ b/include/llvm/Support/Format.h @@ -41,6 +41,7 @@ namespace llvm { class format_object_base { protected: const char *Fmt; + ~format_object_base() {} // Disallow polymorphic deletion. virtual void home(); // Out of line virtual method. /// Call snprintf() for this object, on the given buffer and size. @@ -48,7 +49,6 @@ protected: public: format_object_base(const char *fmt) : Fmt(fmt) {} - virtual ~format_object_base() {} /// Format the object into the specified buffer. On success, this returns /// the length of the formatted string. If the buffer is too small, this @@ -79,7 +79,7 @@ public: /// returns whether or not it is big enough. template -class format_object1 : public format_object_base { +class format_object1 final : public format_object_base { T Val; public: format_object1(const char *fmt, const T &val) @@ -92,7 +92,7 @@ public: }; template -class format_object2 : public format_object_base { +class format_object2 final : public format_object_base { T1 Val1; T2 Val2; public: @@ -106,7 +106,7 @@ public: }; template -class format_object3 : public format_object_base { +class format_object3 final : public format_object_base { T1 Val1; T2 Val2; T3 Val3; @@ -121,7 +121,7 @@ public: }; template -class format_object4 : public format_object_base { +class format_object4 final : public format_object_base { T1 Val1; T2 Val2; T3 Val3; @@ -138,7 +138,7 @@ public: }; template -class format_object5 : public format_object_base { +class format_object5 final : public format_object_base { T1 Val1; T2 Val2; T3 Val3; @@ -158,7 +158,7 @@ public: template -class format_object6 : public format_object_base { +class format_object6 final : public format_object_base { T1 Val1; T2 Val2; T3 Val3;