summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cgraphunit.c3
-rw-r--r--gcc/ipa.c1
3 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3caf3661a6b..57d6fed0918 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2012-05-18 Jan Hubicka <jh@suse.cz>
+
+ * cgraphunit.c (varpool_finalize_decl): Allow external decls.
+ (mark_functions_to_output): Fix sanity check.
+ * ipa.c (function_and_variable_visibility): Remove TREE_STATIC
+ check.
+
2012-05-18 Richard Guenther <rguenther@suse.de>
* tree-flow.h (mark_symbols_for_renaming): Remove.
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 97e810e5f2a..7dae2c8e820 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -819,7 +819,7 @@ varpool_finalize_decl (tree decl)
{
struct varpool_node *node = varpool_node (decl);
- gcc_assert (TREE_STATIC (decl));
+ gcc_assert (TREE_STATIC (decl) || DECL_EXTERNAL (decl));
if (node->finalized)
return;
@@ -1156,6 +1156,7 @@ mark_functions_to_output (void)
have analyzed node pointing to it. */
&& !node->symbol.in_other_partition
&& !node->alias
+ && !node->clones
&& !DECL_EXTERNAL (decl))
{
dump_cgraph_node (stderr, node);
diff --git a/gcc/ipa.c b/gcc/ipa.c
index cafa7a11f2a..43c2f60fa2a 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -915,7 +915,6 @@ function_and_variable_visibility (bool whole_program)
symtab_dissolve_same_comdat_group_list ((symtab_node) vnode);
vnode->symbol.resolution = LDPR_PREVAILING_DEF_IRONLY;
}
- gcc_assert (TREE_STATIC (vnode->symbol.decl));
}
pointer_set_destroy (aliased_nodes);
pointer_set_destroy (aliased_vnodes);