[llvm] r217756 - Fix a non-virtual destructor warning introduced in r217747.

Frédéric Riss friss at apple.com
Tue Sep 16 10:00:38 PDT 2014


> On 16 Sep 2014, at 18:52, Hans Wennborg <hans at chromium.org> wrote:
> 
> On Mon, Sep 15, 2014 at 12:33 PM, Frédéric Riss <friss at apple.com <mailto:friss at apple.com>> wrote:
>> 
>> On 15 Sep 2014, at 20:19, David Blaikie <dblaikie at gmail.com> wrote:
>> 
>> 
>> 
>> On Mon, Sep 15, 2014 at 3:38 AM, Frederic Riss <friss at apple.com> wrote:
>>> 
>>> Author: friss
>>> Date: Mon Sep 15 05:38:13 2014
>>> New Revision: 217756
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=217756&view=rev
>>> Log:
>>> Fix a non-virtual destructor warning introduced in r217747.
>>> 
>>> Modified:
>>>    llvm/trunk/lib/DebugInfo/DWARFUnit.h
>>> 
>>> Modified: llvm/trunk/lib/DebugInfo/DWARFUnit.h
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFUnit.h?rev=217756&r1=217755&r2=217756&view=diff
>>> 
>>> ==============================================================================
>>> --- llvm/trunk/lib/DebugInfo/DWARFUnit.h (original)
>>> +++ llvm/trunk/lib/DebugInfo/DWARFUnit.h Mon Sep 15 05:38:13 2014
>>> @@ -35,6 +35,8 @@ public:
>>>   /// Returns the Unit that contains the given section offset in the
>>>   /// same section this Unit originated from.
>>>   virtual DWARFUnit *getUnitForOffset(uint32_t Offset) const = 0;
>>> +
>>> +  virtual ~DWARFUnitSectionBase() {}
>> 
>> 
>> Since these objects are never polymorphically owned, a better fix for this
>> would be to make the base dtor protected, and the derived classes final.
>> That will satisfy the warning without adding an unneeded vtable
>> entry/virtual call overhead.
>> 
>> 
>> I’ll do that in a followup commit tomorrow.
> 
> This is causing problems for me after r217871:
> 
> In file included from
> third_party/llvm/llvm/lib/DebugInfo/DWARFCompileUnit.h:13:0,
>                 from
> third_party/llvm/llvm/lib/DebugInfo/DWARFDebugInfoEntry.cpp:11:
> third_party/llvm/llvm/lib/DebugInfo/DWARFUnit.h: In instantiation of
> 'class llvm::DWARFUnitSection<llvm::DWARFCompileUnit>':
> third_party/llvm/llvm/lib/DebugInfo/DWARFContext.h:32:38:   required from here
> third_party/llvm/llvm/lib/DebugInfo/DWARFUnit.h:45:7: error: 'class
> llvm::DWARFUnitSection<llvm::DWARFCompileUnit>' has virtual functions
> and accessible non-virtual destructor [-Werror=non-virtual-dtor]

With what compiler is that? I tested it with a fresh clang from master and it didn’t generate the warning. clang < 3.5 is known to produce a bogus warning in this case, but the build system should detect it and not pass -Wnon-virtual-dtor in that case.

I won’t have time to look at this right now, if it is a blocking you and you can’t easily fix it, feel free to revert. (But I’d really like to understand the issue).

Thanks,
Fred

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140916/6367159d/attachment.html>


More information about the llvm-commits mailing list