]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ipa.c (cgraph_externally_visible_p, [...]): Drop aliased parameter.
authorJan Hubicka <jh@suse.cz>
Tue, 9 Apr 2013 22:45:38 +0000 (00:45 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 9 Apr 2013 22:45:38 +0000 (22:45 +0000)
* 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

gcc/ChangeLog
gcc/cgraph.h
gcc/ipa.c
gcc/varpool.c

index dddf37eb21ddf8471c9858c6e2cb98abb55e7754..a623e88b80a9f4b088a3657181332123bd1d4487 100644 (file)
@@ -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.
index 8ab7ae1810281565dfcd3271d24e2b0a62dbaf7f..ef926ec12d81fec1a4b90e25b0a970dc626ef1ff 100644 (file)
@@ -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);
index 0ea73dd8e8656b44f93b45fe114893e0e338004e..f53d9db29b2b13ebb721618a1a5f670b31dde750 100644 (file)
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -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)
     {
index f5a905c753f0759f1e7d2aaa8dcc0fb79da57995..dbf519e6137c2fec12529d277e5600eb408ec472 100644 (file)
@@ -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;
 }