https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69953
Jan Hubicka <hubicka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at redhat dot com --- Comment #18 from Jan Hubicka <hubicka at gcc dot gnu.org> --- The problem is that the symbol shares comdat group with _ZTCN3Gtk14TreeViewColumnE0_N4Glib6ObjectE/10 (_ZTCN3Gtk14TreeViewColumnE0_N4Glib6ObjectE) @0x7ffff6816980 Type: variable definition analyzed Visibility: forced_by_abi externally_visible prevailing_def_ironly public weak comdat comdat_group:_ZTVN3Gtk14TreeViewColumnE one_only visibility_specified visibility:hidden virtual artificial Same comdat group as: _ZTCN3Gtk14TreeViewColumnE0_1C/9 References: _ZTIN4Glib6ObjectE/31 (addr) Referring: _ZTTN3Gtk14TreeViewColumnE/8 (addr) Read from file: t.o Availability: available Varpool flags: initialized read-only const-value-known the symbol itself is: _ZTVN3Gtk14TreeViewColumnE/7 (_ZTVN3Gtk14TreeViewColumnE) @0x7ffff6816000 Type: variable definition analyzed Visibility: forced_by_abi externally_visible prevailing_def_ironly public weak comdat comdat_group:_ZTVN3Gtk14TreeViewColumnE one_only virtual artificial Same comdat group as: _ZTCN3Gtk14TreeViewColumnE8_N4Glib1BE/12 References: _ZTIN3Gtk14TreeViewColumnE/23 (addr)_ZN3Gtk14TreeViewColumnD1Ev/5 (addr)_ZN3Gtk14TreeViewColumnD0Ev/6 (addr)_ZTIN3Gtk14TreeViewColumnE/23 (addr) Referring: _ZN3Gtk14TreeViewColumnD1Ev/5 (addr)_ZTTN3Gtk14TreeViewColumnE/8 (addr)_ZTTN3Gtk14TreeViewColumnE/8 (addr)_ZN3Gtk14TreeViewColumnD0Ev/6 (addr) Read from file: /tmp/cc2mBAHW.o Availability: not-ready Varpool flags: initialized read-only const-value-known The problem is that one is hidden and other is exported. The hidden one will make us to privatize the whole comdat group. Jason, is this intentional? What is the reason for hidding some symbols and keeping other exported? If it is intentional I wonder what to do - I suppose we can privatize the hidden symbols and take them out of the comdat groups as long as we know they are not accessed by the non-IR code. Otherwise we need to keep whole comdat group untouched? This is bit tricky, but of course not that hard to implement.