https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70147
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- See my mail to gcc-patches. According to Jonathan, calling i() is invalid, which your patch would not catch. And, the virtual vptrs should be at least initialized in the in-chrg ctor even if we'd want to accept those, so that would mean applying my patch + for BINFO_VIRTUAL_P wrap up the clearing of the vtable pointer with if (__in_chrg) if that parameter exists.