From ed62e0d9b7f91e65f9c7c3845d0d5c8dce600889 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Wed, 27 Oct 2010 00:42:53 +0200 Subject: ipa.c (process_references): Enqueue all referenced nodes; mark as reachable only non-external nodes. * ipa.c (process_references): Enqueue all referenced nodes; mark as reachable only non-external nodes. (cgraph_remove_unreachable_nodes): All referenced nodes should be enqueued; remove bogues node->needed check. From-SVN: r165990 --- gcc/ipa.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'gcc/ipa.c') diff --git a/gcc/ipa.c b/gcc/ipa.c index c318b65..7c2c7f2 100644 --- a/gcc/ipa.c +++ b/gcc/ipa.c @@ -170,12 +170,11 @@ process_references (struct ipa_ref_list *list, { struct cgraph_node *node = ipa_ref_node (ref); if (!node->reachable + && node->analyzed && (!DECL_EXTERNAL (node->decl) || before_inlining_p)) - { - node->reachable = true; - enqueue_cgraph_node (node, first); - } + node->reachable = true; + enqueue_cgraph_node (node, first); } else { @@ -304,15 +303,15 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file) if (node->reachable) { for (e = node->callees; e; e = e->next_callee) - if (!e->callee->reachable - && node->analyzed - && (!e->inline_failed || !e->callee->analyzed - || (!DECL_EXTERNAL (e->callee->decl)) - || before_inlining_p)) - { + { + if (!e->callee->reachable + && node->analyzed + && (!e->inline_failed + || !DECL_EXTERNAL (e->callee->decl) + || before_inlining_p)) e->callee->reachable = true; - enqueue_cgraph_node (e->callee, &first); - } + enqueue_cgraph_node (e->callee, &first); + } process_references (&node->ref_list, &first, &first_varpool, before_inlining_p); } @@ -416,7 +415,7 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file) found = true; /* If so, we need to keep node in the callgraph. */ - if (found || node->needed) + if (found) { if (node->analyzed) { -- cgit v1.1