[Bug c++/48759] Inconsistency in code generation for inline virtual functions depending on position of the "inline" keyword
jason at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 28 17:20:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48759
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
CC| |jason at gcc dot gnu.org
Resolution| |INVALID
--- Comment #1 from Jason Merrill <jason at gcc dot gnu.org> 2011-04-28 16:58:09 UTC ---
This is correct behavior. The ABI definition says:
5.2.3 Virtual Tables
The virtual table for a class is emitted in the same object containing the
definition of its key function, i.e. the first non-pure virtual function that
is not inline at the point of class definition. If there is no key function, it
is emitted everywhere used. The emitted virtual table includes the full virtual
table group for the class, any new construction virtual tables required for
subobjects, and the VTT for the class. They are emitted in a COMDAT group, with
the virtual table mangled name as the identifying symbol. Note that if the key
function is not declared inline in the class definition, but its definition
later is always declared inline, it will be emitted in every object containing
the definition.
The last sentence describes your situation.
More information about the Gcc-bugs
mailing list