diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-12-15 23:35:20 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-12-15 22:35:20 +0000 |
commit | 6c36539dcffceaff517f6682c08ea236a4c77e14 (patch) | |
tree | 6d7e7596b4e5e5b1571f88c420ce3de5d2a54ec6 /gcc | |
parent | 2bf7560bd3757dbd0d7ffbe8e61b3eb847cfc5f0 (diff) | |
download | gcc-6c36539dcffceaff517f6682c08ea236a4c77e14.zip gcc-6c36539dcffceaff517f6682c08ea236a4c77e14.tar.gz gcc-6c36539dcffceaff517f6682c08ea236a4c77e14.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/lto/20110201-1_0.c | 3 | ||||
-rw-r--r-- | gcc/tree-streamer.c | 13 |
4 files changed, 34 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2929972..a802218 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 @@ -94,6 +100,16 @@ 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 2014-12-14 Jan Hubicka <hubicka@ucw.cz> diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2299c78..c4366d5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 diff --git a/gcc/testsuite/gcc.dg/lto/20110201-1_0.c b/gcc/testsuite/gcc.dg/lto/20110201-1_0.c index a006649..5073a50 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 102cb22..a4502bd 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]); } |