http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678

--- Comment #16 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
I am also seeing this in libreoffice.  We devirtualize into destructor of
ZCodec that is a base class of other codec used in the library, but the library
is not linking with its implementation.

I believe it is a bug to include a class and not link with its implementation
and not explicitly specify that the class may be hidden from the current DSO
and thus it should be solved on the source code side.  We ought to mention this
in news.html and explain the issue.

For libreoffice I go with
class __attribute__ ((hidden)) TOOLS_DLLPUBLIC ZCodec

in include/tools/zcodec.hxx

I was thinking that with LTO I may reduce these problems by ruling out extern
inline bodies that reference UNDEF symbols, but that will not solve non-flto

I wrote bit more on the topic in
http://hubicka.blogspot.ca/2014/01/devirtualization-in-c-part-2-low-level.html

We however need opinion of a C++ maintainer.

Reply via email to