mirror of git://gcc.gnu.org/git/gcc.git
re PR lto/65316 (LTO: Uninitialized memory / ICE with -g -fno-lto-odr-type-merging: in types_same_for_odr, at ipa-devirt.c:465)
PR ipa/65316 * tree.c (free_lang_data_in_type): Be sure to keep BINFO_VTABLE when outputting debug. From-SVN: r221258
This commit is contained in:
parent
e291927919
commit
a7384b1b02
|
|
@ -1,3 +1,9 @@
|
||||||
|
2015-03-05 Jan Hubicka <hubicka@ucw.cz>
|
||||||
|
|
||||||
|
PR ipa/65316
|
||||||
|
* tree.c (free_lang_data_in_type): Be sure to keep BINFO_VTABLE
|
||||||
|
when outputting debug.
|
||||||
|
|
||||||
2015-03-07 Marek Polacek <polacek@redhat.com>
|
2015-03-07 Marek Polacek <polacek@redhat.com>
|
||||||
Martin Uecker <uecker@eecs.berkeley.edu>
|
Martin Uecker <uecker@eecs.berkeley.edu>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5081,9 +5081,15 @@ free_lang_data_in_type (tree type)
|
||||||
if (TYPE_BINFO (type))
|
if (TYPE_BINFO (type))
|
||||||
{
|
{
|
||||||
free_lang_data_in_binfo (TYPE_BINFO (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))
|
if ((!BINFO_VTABLE (TYPE_BINFO (type))
|
||||||
|| !flag_devirtualize)
|
|| !flag_devirtualize)
|
||||||
&& (!BINFO_N_BASE_BINFOS (TYPE_BINFO (type))
|
&& ((!BINFO_N_BASE_BINFOS (TYPE_BINFO (type))
|
||||||
|
&& !BINFO_VTABLE (TYPE_BINFO (type)))
|
||||||
|| debug_info_level != DINFO_LEVEL_NONE))
|
|| debug_info_level != DINFO_LEVEL_NONE))
|
||||||
TYPE_BINFO (type) = NULL;
|
TYPE_BINFO (type) = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue