re PR lto/64043 (ICE (segfault) with LTO: in tree_check/tree.h:2758 get_binfo_at_offset/tree.c:11914)

PR lto/64043
	* gcc.dg/lto/20110201-1_0.c: New testcase.

	* tree-streamer.c (preload_common_nodes): Skip preloading
	of main_identifier_node, pid_type and optimization/option nodes.

From-SVN: r218767
This commit is contained in:
Jan Hubicka 2014-12-15 23:35:20 +01:00 committed by Jan Hubicka
parent 2bf7560bd3
commit 6c36539dcf
4 changed files with 34 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2014-12-15 Jan Hubicka <hubicka@ucw.cz>
PR lto/64043
* tree-streamer.c (preload_common_nodes): Skip preloading
of main_identifier_node, pid_type and optimization/option nodes.
2014-12-15 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/63397
@ -92,6 +98,16 @@
* tree-ssa-threadupdate.c (duplicate_seme_region): Mark
the loop for removal if we copied the loop header.
2014-12-14 Jan Hubicka <hubicka@ucw.cz>
PR ipa/61602
* cgraph.h (ipa_discover_readonly_nonaddressable_vars): Return bool.
* ipa.c (set_writeonly_bit): Track if reference was removed.
(ipa_discover_readonly_nonaddressable_vars): Return true if any
references was removed.
* ipa-reference.c (propagate): Return TODO_remove_functions if
reference was removed.
2014-12-14 Jan Hubicka <hubicka@ucw.cz>
* ipa.c (process_references): Fix conditoinal on flag_optimize

View File

@ -1,3 +1,8 @@
2014-12-15 Jan Hubicka <hubicka@ucw.cz>
PR lto/64043
* gcc.dg/lto/20110201-1_0.c: New testcase.
2014-12-15 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/64316

View File

@ -1,6 +1,5 @@
/* { dg-lto-do run } */
/* { dg-lto-options { { -O0 -flto } } } */
/* { dg-extra-ld-options "-O2 -ffast-math -fuse-linker-plugin" } */
/* { dg-require-linker-plugin "" } */
/* We require a linker plugin because otherwise we'd need to link
@ -9,7 +8,7 @@
which does not have folded cabs. */
double cabs(_Complex double);
double __attribute__((used))
double __attribute__((used)) __attribute__ ((optimize ("O2,fast-math")))
foo (_Complex double x, int b)
{
if (b)

View File

@ -324,7 +324,18 @@ preload_common_nodes (struct streamer_tree_cache_d *cache)
/* Skip boolean type and constants, they are frontend dependent. */
if (i != TI_BOOLEAN_TYPE
&& i != TI_BOOLEAN_FALSE
&& i != TI_BOOLEAN_TRUE)
&& i != TI_BOOLEAN_TRUE
/* MAIN_IDENTIFIER is not always initialized by Fortran FE. */
&& i != TI_MAIN_IDENTIFIER
/* PID_TYPE is initialized only by C family front-ends. */
&& i != TI_PID_TYPE
/* Skip optimization and target option nodes; they depend on flags. */
&& i != TI_OPTIMIZATION_DEFAULT
&& i != TI_OPTIMIZATION_CURRENT
&& i != TI_TARGET_OPTION_DEFAULT
&& i != TI_TARGET_OPTION_CURRENT
&& i != TI_CURRENT_TARGET_PRAGMA
&& i != TI_CURRENT_OPTIMIZE_PRAGMA)
record_common_node (cache, global_trees[i]);
}