Commit c9945504 by Jan Hubicka Committed by Jan Hubicka

lto.c (globalize_cross_file_statics): When function has address taken, it needs to be public.

	* lto.c (globalize_cross_file_statics): When function has address taken,
	it needs to be public.
	* varpool.c (decide_is_variable_needed): Variable is always needed
	during ltrans.

From-SVN: r158609
parent e7cfce71
2010-04-21 Jan Hubicka <jh@suse.cz>
* varpool.c (decide_is_variable_needed): Variable is always needed
during ltrans.
2010-04-21 Jan Hubicka <jh@suse.cz>
* opts.c (decode_options): Enable pure-const pass for whopr.
2010-04-21 Jan Hubicka <jh@suse.cz>
......
2010-04-21 Jan Hubicka <jh@suse.cz>
* lto.c (globalize_cross_file_statics): When function has address taken,
it needs to be public.
2010-04-20 Jan Hubicka <jh@suse.cz>
* lto.c (lto_add_inline_clones): Do not track inlined_decls.
......
......@@ -760,7 +760,8 @@ globalize_cross_file_statics (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED,
}
else if (TREE_CODE (t) == FUNCTION_DECL && !TREE_PUBLIC (t))
{
if (!cgraph_node_in_set_p (cgraph_node (t), context->set))
if (!cgraph_node_in_set_p (cgraph_node (t), context->set)
|| cgraph_node (t)->address_taken)
{
/* This file-scope static function is reachable from a set
which does not contain the function DECL. Make it global
......
......@@ -230,6 +230,12 @@ varpool_reset_queue (void)
bool
decide_is_variable_needed (struct varpool_node *node, tree decl)
{
/* We do not track variable references at all and thus have no idea if the
variable was referenced in some other partition or not.
FIXME: We really need address taken edges in callgraph and varpool to
drive WPA and decide whether other partition might reference it or not. */
if (flag_ltrans)
return true;
/* If the user told us it is used, then it must be so. */
if ((node->externally_visible && !DECL_COMDAT (decl))
|| node->force_output)
......
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