aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2014-09-20 04:58:42 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2014-09-20 02:58:42 +0000
commit1acc55917e1afae9eed569f45653a122fd99af99 (patch)
tree7f27ae05149a192cf7c25b6f4f20f63d97ad9d9a /gcc/ipa.c
parente2254932f9afd2a0864330dbf37522c99f3ab3f6 (diff)
downloadgcc-1acc55917e1afae9eed569f45653a122fd99af99.zip
gcc-1acc55917e1afae9eed569f45653a122fd99af99.tar.gz
gcc-1acc55917e1afae9eed569f45653a122fd99af99.tar.bz2
re PR tree-optimization/63255 (FAIL: gcc.dg/lto/ipareference2 c_lto_ipareference2_0.o-c_lto_ipareference2_1.o execute -O1 -flto -flto-partition=1to1 -fwhole-program)
PR tree-optimization/63255 * ipa.c (symbol_table::remove_unreachable_nodes): Fix ordering issue in setting body_removed flag. From-SVN: r215415
Diffstat (limited to 'gcc/ipa.c')
-rw-r--r--gcc/ipa.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/ipa.c b/gcc/ipa.c
index 5afacd8..3c35e47 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -538,6 +538,11 @@ symbol_table::remove_unreachable_nodes (bool before_inlining_p, FILE *file)
fprintf (file, " %s", vnode->name ());
changed = true;
}
+ /* Keep body if it may be useful for constant folding. */
+ if ((init = ctor_for_folding (vnode->decl)) == error_mark_node)
+ vnode->remove_initializer ();
+ else
+ DECL_INITIAL (vnode->decl) = init;
vnode->body_removed = true;
vnode->definition = false;
vnode->analyzed = false;
@@ -545,11 +550,6 @@ symbol_table::remove_unreachable_nodes (bool before_inlining_p, FILE *file)
vnode->remove_from_same_comdat_group ();
- /* Keep body if it may be useful for constant folding. */
- if ((init = ctor_for_folding (vnode->decl)) == error_mark_node)
- vnode->remove_initializer ();
- else
- DECL_INITIAL (vnode->decl) = init;
vnode->remove_all_references ();
}
else