[Bug lto/84044] Spurious -Wodr warning with -flto
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Fri Jan 26 14:05:00 GMT 2018
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?
More information about the Gcc-bugs
mailing list