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>
|
||||
Martin Uecker <uecker@eecs.berkeley.edu>
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue