diff options
Diffstat (limited to 'gcc/lto')
-rw-r--r-- | gcc/lto/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/lto/lto.c | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 9118e0045ea..a97314c928b 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,8 @@ +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. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 1544f05ab4f..ea8f03a131d 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -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 |