https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659

--- Comment #14 from Jason Merrill <jason at gcc dot gnu.org> ---
Right.  My patch causes us to synthesize ~I so that it's available for
devirtualization, which we weren't doing before.  This is allowed by the C++
standard: 3.2p3 says "A virtual member function is odr-used if it is not pure."
so the compiler is free to instantiate/synthesize any virtual function.

Avoiding this while still getting the devirtualization benefit would require
some mechanism for devirtualization to call back into the front end to trigger
the instantiation/synthesis directly.  This might be workable for an individual
translation unit, but not for LTO.

Reply via email to