https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87089
Jan Hubicka <hubicka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at redhat dot com --- Comment #9 from Jan Hubicka <hubicka at gcc dot gnu.org> --- This is caused by: _ZN4itpp1cILNS_1aE0EED2Ev/1 (itpp::c<<anonymous> >::~c() [with itpp::a <anonymous> = itpp::b]) @0x7ffff70e9438 Type: function definition analyzed Visibility: forced_by_abi public weak comdat_group:_ZN4itpp1cILNS_1aE0EED5Ev one_only Same comdat group as: _ZN4itpp1cILNS_1aE0EED1Ev/2 Address is taken. Aux: @0x7ffff70e95a0 References: _ZTVN4itpp1cILNS_1aE0EEE/4 (addr)__gxx_personality_v0/8 (addr) Referring: _ZN4itpp1cILNS_1aE0EED1Ev/2 (alias) Function flags: body Called by: Calls: itpp::CFix::~CFix()/7 this is a destructor which is pointed to from virutal table, but it has no DECL_VIRTUAL_P flag set. This makes free_lang_data to modify its context and point to outer namespace rather than the containing polymorphic type. Why we do not set VIRTUAL_P here?