diff options
author | Jan Hubicka <jh@suse.cz> | 2013-04-10 00:45:38 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2013-04-09 22:45:38 +0000 |
commit | 5ac42672ba39aba2d38ac91815c29dd33774def3 (patch) | |
tree | 2dfec772280a1ddb1d00f01fa8d35b2912583c1a /gcc | |
parent | d74e340d7c94bd5a4754a58f2993def64cfe1edf (diff) | |
download | gcc-5ac42672ba39aba2d38ac91815c29dd33774def3.zip gcc-5ac42672ba39aba2d38ac91815c29dd33774def3.tar.gz gcc-5ac42672ba39aba2d38ac91815c29dd33774def3.tar.bz2 |
ipa.c (cgraph_externally_visible_p, [...]): Drop aliased parameter.
* ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p): Drop
aliased parameter.
(function_and_variable_visibility): Do not handle alias pairs.
* cgraph.c (varpool_externally_visible_p): Update prototype.
* varpool.c (varpool_add_new_variable): Update.
From-SVN: r197652
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/cgraph.h | 2 | ||||
-rw-r--r-- | gcc/ipa.c | 61 | ||||
-rw-r--r-- | gcc/varpool.c | 2 |
4 files changed, 16 insertions, 57 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dddf37e..a623e88 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-04-09 Jan Hubicka <jh@suse.cz> + + * ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p): Drop + aliased parameter. + (function_and_variable_visibility): Do not handle alias pairs. + * cgraph.c (varpool_externally_visible_p): Update prototype. + * varpool.c (varpool_add_new_variable): Update. + 2013-04-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm.md (minmax_arithsi_non_canon): New pattern. diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 8ab7ae1..ef926ec 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -726,7 +726,7 @@ void debug_varpool_node_set (varpool_node_set); void free_varpool_node_set (varpool_node_set); void ipa_discover_readonly_nonaddressable_vars (void); bool cgraph_comdat_can_be_unshared_p (struct cgraph_node *); -bool varpool_externally_visible_p (struct varpool_node *, bool); +bool varpool_externally_visible_p (struct varpool_node *); /* In predict.c */ bool cgraph_maybe_hot_edge_p (struct cgraph_edge *e); @@ -573,7 +573,7 @@ cgraph_comdat_can_be_unshared_p (struct cgraph_node *node) static bool cgraph_externally_visible_p (struct cgraph_node *node, - bool whole_program, bool aliased) + bool whole_program) { if (!node->local.finalized) return false; @@ -582,11 +582,6 @@ cgraph_externally_visible_p (struct cgraph_node *node, || DECL_EXTERNAL (node->symbol.decl))) return false; - /* Do not even try to be smart about aliased nodes. Until we properly - represent everything by same body alias, these are just evil. */ - if (aliased) - return true; - /* Do not try to localize built-in functions yet. One of problems is that we end up mangling their asm for WHOPR that makes it impossible to call them using the implicit built-in declarations anymore. Similarly this enables @@ -638,7 +633,7 @@ cgraph_externally_visible_p (struct cgraph_node *node, /* Return true when variable VNODE should be considered externally visible. */ bool -varpool_externally_visible_p (struct varpool_node *vnode, bool aliased) +varpool_externally_visible_p (struct varpool_node *vnode) { /* Do not touch weakrefs; while they are not externally visible, dropping their DECL_EXTERNAL flags confuse most @@ -652,11 +647,6 @@ varpool_externally_visible_p (struct varpool_node *vnode, bool aliased) if (!DECL_COMDAT (vnode->symbol.decl) && !TREE_PUBLIC (vnode->symbol.decl)) return false; - /* Do not even try to be smart about aliased nodes. Until we properly - represent everything by same body alias, these are just evil. */ - if (aliased) - return true; - /* If linker counts on us, we must preserve the function. */ if (symtab_used_from_object_file_p ((symtab_node) vnode)) return true; @@ -733,42 +723,9 @@ function_and_variable_visibility (bool whole_program) { struct cgraph_node *node; struct varpool_node *vnode; - struct pointer_set_t *aliased_nodes = pointer_set_create (); - struct pointer_set_t *aliased_vnodes = pointer_set_create (); - unsigned i; - alias_pair *p; - /* Discover aliased nodes. */ - FOR_EACH_VEC_SAFE_ELT (alias_pairs, i, p) - { - if (dump_file) - fprintf (dump_file, "Alias %s->%s", - IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (p->decl)), - IDENTIFIER_POINTER (p->target)); - - if ((node = cgraph_node_for_asm (p->target)) != NULL - && !DECL_EXTERNAL (node->symbol.decl)) - { - if (!node->analyzed) - continue; - cgraph_mark_force_output_node (node); - pointer_set_insert (aliased_nodes, node); - if (dump_file) - fprintf (dump_file, " node %s/%i", - cgraph_node_name (node), node->uid); - } - else if ((vnode = varpool_node_for_asm (p->target)) != NULL - && !DECL_EXTERNAL (vnode->symbol.decl)) - { - vnode->symbol.force_output = 1; - pointer_set_insert (aliased_vnodes, vnode); - if (dump_file) - fprintf (dump_file, " varpool node %s", - varpool_node_name (vnode)); - } - if (dump_file) - fprintf (dump_file, "\n"); - } + /* All aliases should be procssed at this point. */ + gcc_checking_assert (!alias_pairs || !alias_pairs->length()); FOR_EACH_FUNCTION (node) { @@ -817,9 +774,7 @@ function_and_variable_visibility (bool whole_program) && !DECL_COMDAT (node->symbol.decl)) || TREE_PUBLIC (node->symbol.decl) || DECL_EXTERNAL (node->symbol.decl)); - if (cgraph_externally_visible_p (node, whole_program, - pointer_set_contains (aliased_nodes, - node))) + if (cgraph_externally_visible_p (node, whole_program)) { gcc_assert (!node->global.inlined_to); node->symbol.externally_visible = true; @@ -898,9 +853,7 @@ function_and_variable_visibility (bool whole_program) { if (!vnode->finalized) continue; - if (varpool_externally_visible_p - (vnode, - pointer_set_contains (aliased_vnodes, vnode))) + if (varpool_externally_visible_p (vnode)) vnode->symbol.externally_visible = true; else vnode->symbol.externally_visible = false; @@ -913,8 +866,6 @@ function_and_variable_visibility (bool whole_program) vnode->symbol.resolution = LDPR_PREVAILING_DEF_IRONLY; } } - pointer_set_destroy (aliased_nodes); - pointer_set_destroy (aliased_vnodes); if (dump_file) { diff --git a/gcc/varpool.c b/gcc/varpool.c index f5a905c..dbf519e 100644 --- a/gcc/varpool.c +++ b/gcc/varpool.c @@ -191,7 +191,7 @@ varpool_add_new_variable (tree decl) struct varpool_node *node; varpool_finalize_decl (decl); node = varpool_node_for_decl (decl); - if (varpool_externally_visible_p (node, false)) + if (varpool_externally_visible_p (node)) node->symbol.externally_visible = true; } |