PR ipa/61886
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 8 Dec 2015 22:02:23 +0000 (22:02 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 8 Dec 2015 22:02:23 +0000 (22:02 +0000)
* varpool.c (varpool_node::get_availability): Recurse only on
weakrefs with definition in the target.
(symbol_table::remove_unreferenced_decls): Keep aliases in the boundary.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231429 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/varpool.c

index 8554091..55f89c9 100644 (file)
@@ -1,8 +1,15 @@
 2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
 
        PR ipa/61886
-       * ipa-visibility.c (can_replace_by_local_alias): Look through transparent
-       aliaes; refuse weakrefs.
+       * varpool.c (varpool_node::get_availability): Recurse only on
+       weakrefs with definition in the target.
+       (symbol_table::remove_unreferenced_decls): Keep aliases in the boundary.
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       * ipa-visibility.c (can_replace_by_local_alias): Look through
+       transparent aliases; refuse weakrefs.
        (update_visibility_by_resolution_info): Skip transparent aliases in the
        analysis part
 
index ffbec6d..ac77269 100644 (file)
@@ -490,7 +490,7 @@ varpool_node::get_availability (void)
   if (DECL_IN_CONSTANT_POOL (decl)
       || DECL_VIRTUAL_P (decl))
     return AVAIL_AVAILABLE;
-  if (transparent_alias)
+  if (transparent_alias && definition)
     {
       enum availability avail;
 
@@ -667,11 +667,11 @@ symbol_table::remove_unreferenced_decls (void)
            enqueue_node (vnode, &first);
          else
            {
-             referenced.add (node);
-             while (node->alias && node->definition)
+             referenced.add (vnode);
+             while (vnode && vnode->alias && vnode->definition)
                {
-                 node = node->get_alias_target ();
-                 referenced.add (node);
+                 vnode = vnode->get_alias_target ();
+                 referenced.add (vnode);
                }
            }
        }