Commit 9b21e866 by Jan Hubicka Committed by Jan Hubicka

re PR lto/61886 (LTO breaks fread with _FORTIFY_SOURCE=2)


	PR ipa/61886
	* 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.

From-SVN: r231429
parent ced7e958
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
......@@ -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);
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment