From 6c36539dcffceaff517f6682c08ea236a4c77e14 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Mon, 15 Dec 2014 23:35:20 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 16 ++++++++++++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/lto/20110201-1_0.c | 3 +-- gcc/tree-streamer.c | 13 ++++++++++++- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 29299724256..a80221827eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-12-15 Jan Hubicka + + 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 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 + + 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 * ipa.c (process_references): Fix conditoinal on flag_optimize diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2299c78e427..c4366d5cc5d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-12-15 Jan Hubicka + + PR lto/64043 + * gcc.dg/lto/20110201-1_0.c: New testcase. + 2014-12-15 Jakub Jelinek PR rtl-optimization/64316 diff --git a/gcc/testsuite/gcc.dg/lto/20110201-1_0.c b/gcc/testsuite/gcc.dg/lto/20110201-1_0.c index a006649286d..5073a50fc52 100644 --- a/gcc/testsuite/gcc.dg/lto/20110201-1_0.c +++ b/gcc/testsuite/gcc.dg/lto/20110201-1_0.c @@ -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) diff --git a/gcc/tree-streamer.c b/gcc/tree-streamer.c index 102cb2256ea..a4502bd2167 100644 --- a/gcc/tree-streamer.c +++ b/gcc/tree-streamer.c @@ -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]); } -- 2.30.2