diff options
author | Jan Hubicka <jh@suse.cz> | 2010-10-27 00:42:53 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2010-10-26 22:42:53 +0000 |
commit | ed62e0d9b7f91e65f9c7c3845d0d5c8dce600889 (patch) | |
tree | 720a1c9202abf0413ef0563ab046a20ae17bcc6a /gcc | |
parent | 8c3800373fa39db275e4bea68fa775a0defb3daf (diff) | |
download | gcc-ed62e0d9b7f91e65f9c7c3845d0d5c8dce600889.zip gcc-ed62e0d9b7f91e65f9c7c3845d0d5c8dce600889.tar.gz gcc-ed62e0d9b7f91e65f9c7c3845d0d5c8dce600889.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ipa.c | 25 |
2 files changed, 16 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 152c279..7c6b89a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,14 +1,14 @@ 2010-10-26 Jan Hubicka <jh@suse.cz> - * cgraphbuild.c (build_cgraph_edges): Use ipa-reference to represent OMP. - -2010-10-26 Jan Hubicka <jh@suse.cz> - * 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. +2010-10-26 Jan Hubicka <jh@suse.cz> + + * cgraphbuild.c (build_cgraph_edges): Use ipa-reference to represent OMP. + 2010-10-26 H.J. Lu <hongjiu.lu@intel.com> * config/i386/i386.md (split_stack_return): Replace @@ -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) { |