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:
Jan Hubicka 2015-03-07 21:33:58 +01:00 committed by Jan Hubicka
parent e291927919
commit a7384b1b02
2 changed files with 13 additions and 1 deletions

View File

@ -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>
Martin Uecker <uecker@eecs.berkeley.edu>

View File

@ -5081,9 +5081,15 @@ free_lang_data_in_type (tree type)
if (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))
|| !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))
TYPE_BINFO (type) = NULL;
}