diff options
author | Jan Hubicka <jh@suse.cz> | 2009-10-08 12:06:52 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2009-10-08 10:06:52 +0000 |
commit | b820a2f900a6d6c6e6f1be3a2da8c49b4155445a (patch) | |
tree | 21f8a80d6d0650ffe6420cddceb0d7928b66d72a | |
parent | b44d3aa84fdaa5d64f6a6fa184627f1bfffcecda (diff) | |
download | gcc-b820a2f900a6d6c6e6f1be3a2da8c49b4155445a.zip gcc-b820a2f900a6d6c6e6f1be3a2da8c49b4155445a.tar.gz gcc-b820a2f900a6d6c6e6f1be3a2da8c49b4155445a.tar.bz2 |
re PR bootstrap/41620 (Bootstrap failure)
PR bootstrap/41620
* ipa.c (cgraph_externally_visible_p,
function_and_variable_visibility,
whole_program_function_and_variable_visibility): Skip non-finalized
nodes.
From-SVN: r152556
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ipa.c | 6 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 70b2861..a26d6dd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2009-10-08 Jan Hubicka <jh@suse.cz> + + PR bootstrap/41620 + * ipa.c (cgraph_externally_visible_p, + function_and_variable_visibility, + whole_program_function_and_variable_visibility): Skip non-finalized + nodes. + 2009-10-08 Nick Clifton <nickc@redhat.com> * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow @@ -254,6 +254,8 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file) static bool cgraph_externally_visible_p (struct cgraph_node *node, bool whole_program) { + if (!node->local.finalized) + return false; if (!DECL_COMDAT (node->decl) && (!TREE_PUBLIC (node->decl) || DECL_EXTERNAL (node->decl))) return false; @@ -312,6 +314,8 @@ function_and_variable_visibility (bool whole_program) } for (vnode = varpool_nodes_queue; vnode; vnode = vnode->next_needed) { + if (!vnode->finalized) + continue; if (vnode->needed && (DECL_COMDAT (vnode->decl) || TREE_PUBLIC (vnode->decl)) && (!whole_program @@ -392,7 +396,7 @@ whole_program_function_and_variable_visibility (void) function_and_variable_visibility (flag_whole_program); for (node = cgraph_nodes; node; node = node->next) - if (node->local.externally_visible) + if (node->local.externally_visible && node->local.finalized) cgraph_mark_needed_node (node); for (vnode = varpool_nodes_queue; vnode; vnode = vnode->next_needed) if (vnode->externally_visible) |