aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2013-08-05 16:51:37 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2013-08-05 14:51:37 +0000
commit51a5c0c2b26ff09ceba355b45dedde5bac1b0560 (patch)
tree55b33a90f0a48abd0d1d39a094f6327004fbb3b0 /gcc/ipa.c
parent65f0a1207d8127d07a33089379bfd962f600bd19 (diff)
downloadgcc-51a5c0c2b26ff09ceba355b45dedde5bac1b0560.zip
gcc-51a5c0c2b26ff09ceba355b45dedde5bac1b0560.tar.gz
gcc-51a5c0c2b26ff09ceba355b45dedde5bac1b0560.tar.bz2
re PR lto/57602 (Runfails for several C/C++ benchmarks from spec2000 for i686 with -flto after r199422)
PR lto/57602 * cgraph.c (verify_cgraph_node): Accept local flags from other partitions. * ipa.c (symtab_remove_unreachable_nodes): Do not clear local flag. (function_and_variable_visibility): Likewise. * trans-mem.c (ipa_tm_create_version): TM versions are not local. From-SVN: r201492
Diffstat (limited to 'gcc/ipa.c')
-rw-r--r--gcc/ipa.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ipa.c b/gcc/ipa.c
index 2f60a98..aa6485c 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -376,7 +376,15 @@ symtab_remove_unreachable_nodes (bool before_inlining_p, FILE *file)
{
if (file)
fprintf (file, " %s", cgraph_node_name (node));
- cgraph_reset_node (node);
+ node->symbol.analyzed = false;
+ node->symbol.definition = false;
+ node->symbol.cpp_implicit_alias = false;
+ node->symbol.alias = false;
+ node->symbol.weakref = false;
+ if (!node->symbol.in_other_partition)
+ node->local.local = false;
+ cgraph_node_remove_callees (node);
+ ipa_remove_all_references (&node->symbol.ref_list);
changed = true;
}
}
@@ -888,7 +896,7 @@ function_and_variable_visibility (bool whole_program)
}
FOR_EACH_DEFINED_FUNCTION (node)
{
- node->local.local = cgraph_local_node_p (node);
+ node->local.local |= cgraph_local_node_p (node);
/* If we know that function can not be overwritten by a different semantics
and moreover its section can not be discarded, replace all direct calls