Commit a7384b1b by Jan Hubicka Committed by Jan Hubicka

re PR lto/65316 (LTO: Uninitialized memory / ICE with -g…

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
parent e2919279
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) ...@@ -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;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment