This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Question w.r.t. `'class Foo' has virtual functions but non-virtualdestructor`warning.


Chris Lattner wrote:

I've run into this warning with C++ code as well, and it is quite annoying. There are lots of possible reasons to want to do this sort of thing, and adding a virtual dtor increases the size of the vtable for the class.

Yeah, there goes one whole pointer per class in your program image. :-) Seriously, you'd have to have a lot of classes and not very many objects before that got to be *too* big a deal. But, we do have customers who count every byte, so I'm not totally discounting this objection.


It seems that the warning could be improved to be emitted when the *delete* is seen of a class without a virtual dtor (but that does have virtual methods). If you never actually do the questionable behavior, you'd never get the warning. It seems like a bug to emit it for the class definition.

Age-old debate: better to warn early about possibly broken interfaces, or late about definitely broken usage? I think that warning early, together with what DJ is calling fine-grained warning control is the best solution.


--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
(916) 791-8304


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]