Hi,
On 21/06/19 21:27, Paolo Carlini wrote:
Hi,
On 21/06/19 20:50, Jason Merrill wrote:
On 6/20/19 12:24 AM, Paolo Carlini wrote:
Hi,
this bug notices that the more aggressive de-virtualization check
that we have now in place (fixed c++/67184) doesn't work correctly
for the below reproducer, which involves a pure virtual: we
de-virtualize and the build fails at link-time. To cure this I
believe we simply want an additional DECL_PURE_VIRTUAL_P in the
condition.
I don't see why this bug would be specific to pure virtual functions,
so the fix also should not be. If S1::f is not pure virtual, I'd
expect that we wrongly devirtualize to it in the same way.
By the way, if S1:.f is not pure virtual, just a virtual declaration -
all the rest being the same - the code doesn't link: undefined
references to vtable and typeinfo for S1. The same happens with current
clang and icc. I don't know if this detail helps us in the short term....
Paolo.