https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84044
--- Comment #7 from rguenther at suse dot de <rguenther at suse dot de> --- On Fri, 26 Jan 2018, marxin at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84044 > > --- Comment #5 from Martin Liška <marxin at gcc dot gnu.org> --- > (In reply to Richard Biener from comment #4) > > (In reply to Martin Liška from comment #3) > > > Fixed on trunk by Richi's r256685. Is it intentional Richi that the > > > revision > > > should fix such situations? > > > > Not really. It means that the following hunk removes too many TYPE_BINFOs > > I guess? > > > > @@ -5150,15 +5145,9 @@ free_lang_data_in_type (tree type) > > { > > free_lang_data_in_binfo (TYPE_BINFO (type)); > > /* We need to preserve link to bases and virtual table for all > > - polymorphic types to make devirtualization machinery working. > > - Debug output cares only about bases, but output also > > - virtual table pointers so merging of -fdevirtualize and > > - -fno-devirtualize units is easier. */ > > - if ((!BINFO_VTABLE (TYPE_BINFO (type)) > > - || !flag_devirtualize) > > - && ((!BINFO_N_BASE_BINFOS (TYPE_BINFO (type)) > > - && !BINFO_VTABLE (TYPE_BINFO (type))) > > - || debug_info_level != DINFO_LEVEL_NONE)) > > + polymorphic types to make devirtualization machinery working. > > */ > > + if (!BINFO_VTABLE (TYPE_BINFO (type)) > > + || !flag_devirtualize) > > TYPE_BINFO (type) = NULL; > > } > > } > > Reverting this hunk makes the warning visible again. Interesting. This means that with -g it didn't warn before either? Which means that maybe unconditionally && !BINFO_N_BASE_BINFOS (TYPE_BINFO (type)) was intented? Honza?