aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2009-10-08 12:06:52 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2009-10-08 10:06:52 +0000
commitb820a2f900a6d6c6e6f1be3a2da8c49b4155445a (patch)
tree21f8a80d6d0650ffe6420cddceb0d7928b66d72a
parentb44d3aa84fdaa5d64f6a6fa184627f1bfffcecda (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/ipa.c6
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
diff --git a/gcc/ipa.c b/gcc/ipa.c
index 50eade0..c859242 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -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)