aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa.c10
2 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c345dc1..ad43536 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2014-09-19 Jan Hubicka <hubicka@ucw.cz>
+ PR tree-optimization/63255
+ * ipa.c (symbol_table::remove_unreachable_nodes): Fix ordering
+ issue in setting body_removed flag.
+
+2014-09-19 Jan Hubicka <hubicka@ucw.cz>
+
PR c++/61825
* c-family/c-common.c (handle_alias_ifunc_attribute): Check
that visibility change is possible
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