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

David Blaikie dblaikie at gmail.com
Tue Sep 16 09:57:33 PDT 2014


On Tue, Sep 16, 2014 at 9:52 AM, Hans Wennborg <hans at chromium.org> wrote:

> On Mon, Sep 15, 2014 at 12:33 PM, Frédéric Riss <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]
>

Which build system & compiler (version/revision) are you using?

I was pretty sure we already have cases of this sort of code that should be
warning if this was a problem... (we added checking in the build config
(maybe only in cmake? not sure) to disable the warning unless it had the
right behavior here)


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


More information about the llvm-commits mailing list