Ignore cxa_pure_virtual in ipa-devirt's target lists

Jason Merrill jason@redhat.com
Tue Apr 15 13:54:00 GMT 2014


On 04/14/2014 04:06 PM, Jan Hubicka wrote:
> 1) write backend pass that walks vtables and for every non-hidden noreturn function
>     it can produce hidden COMDAT wrapper with a fixed (GCC local) mangling.
>     Perhaps with a command line option to do so for all virtual functions; while this
>     would introduce extra call into most of virtual calls, this may not be too bad
>     with LTO, where we can do that only for virtuals that are exported from unit.

With LTO, we could do this for all virtuals that are not defined 
locally; nothing in the language allows you to compare the address value 
of a vtable element...but I suppose speculative devirtualization does, 
so maybe not.

> 2) make something similar in C++ FE (probably not so cool idea because of the comment
>     above)
> 3) introduce hidden local_cxa_pure_virtual into bits that are linked into every
>     DSO so we do not need to play with COMDAT.

This makes sense to me.

Jason



More information about the Gcc-patches mailing list