Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Mar 1997 10:16:09 +0000
From:      James Mansion <james@wgold.demon.co.uk>
To:        hackers@freebsd.org
Subject:   Re: Barb problem, FOUND
Message-ID:  <332BC869.37B7@wgold.demon.co.uk>
References:  <199703160612.XAA13150@rover.village.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In no way shape or form is an inline virtual function (destructor or
not) 'dunious'.  Its quite legal.  (Whether you might consider it to be
bad style is another matter.  You can't always avoid it if the class is
a template, though that's clearly not the case with tvision)

Bear in mind that smart C++ systems will merge duplicated static emitted
inlines whether they are emitted as a result of too much complexity or
through being vritual.

Further, such 'outlined' virtuals need only be emitted in the module
chosen to carry the vtable, and will only potentially bloat if there is
no convenient method to tag the vtable to.

If the compiler cannot handle code like this, then the compiler should
be fixed.

James

Warner Losh wrote:
> 
> {standard input}: Assembler messages:
> {standard input}:1147: Warning: GOT relocation burb: `__vt$5TNode' should be global
> 
> OK.  The problem here is trivial to reproduce.
> 
> All of the members of TNode are virtual.  Even the dtor, and it is
> specifically inline (which is a major no-no for virtual dtors (and
> virtual functions in general) because most compiler give multiple
> copies).
> 
> This message should really read
> 
> "TNode::~TNode is an inline virtual function, and I don't know how to
>  cope, so fix the dubious construct in the code, OK"
> 
> In the case of tvision 0.3, I see it for each of the classes that have
> virtual inline functions, but it reports the wrong function name.
> 
> Comments?
> 
> Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?332BC869.37B7>