diff options
author | Jan Hubicka <jh@suse.cz> | 2011-06-13 11:19:09 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2011-06-13 09:19:09 +0000 |
commit | 9aa3f5c58c228ee74b8a2d9b3977fee1c97cc6bd (patch) | |
tree | 7e356df77924fcdd550af73036e37d71e9ab5ddb /gcc/cgraph.h | |
parent | 30cecf17a92a1e52374fa04e25c8b921372f676c (diff) | |
download | gcc-9aa3f5c58c228ee74b8a2d9b3977fee1c97cc6bd.zip gcc-9aa3f5c58c228ee74b8a2d9b3977fee1c97cc6bd.tar.gz gcc-9aa3f5c58c228ee74b8a2d9b3977fee1c97cc6bd.tar.bz2 |
cgraph.c (cgraph_for_node_thunks_and_aliases, [...]): Fix thinko in recursive walking.
* cgraph.c (cgraph_for_node_thunks_and_aliases,
cgraph_for_node_and_aliases): Fix thinko in recursive walking.
(nonremovable_p): New function.
(cgraph_can_remove_if_no_direct_calls_p): New function.
(used_from_object_file_p): New functoin.
(cgraph_will_be_removed_from_program_if_no_direct_calls): Look for references
from aliases.
* cgraph.h (cgraph_can_remove_if_no_direct_calls_p): Bring offline.
* ipa-inline.c (check_caller_edge): New function.
(want_inline_function_called_once_p): Use it; accept aliases called once, too.
* ipa-inline-analysis.c (do_estimate_growth): Remove FIXME.
From-SVN: r174985
Diffstat (limited to 'gcc/cgraph.h')
-rw-r--r-- | gcc/cgraph.h | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 09d99b1..feb742d 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -535,6 +535,7 @@ bool cgraph_will_be_removed_from_program_if_no_direct_calls (struct cgraph_node *node); bool cgraph_can_remove_if_no_direct_calls_and_refs_p (struct cgraph_node *node); +bool cgraph_can_remove_if_no_direct_calls_p (struct cgraph_node *node); bool resolution_used_from_other_file_p (enum ld_plugin_symbol_resolution); bool cgraph_used_from_object_file_p (struct cgraph_node *); bool varpool_used_from_object_file_p (struct varpool_node *); @@ -926,20 +927,6 @@ cgraph_only_called_directly_or_aliased_p (struct cgraph_node *node) if all direct calls are eliminated. */ static inline bool -cgraph_can_remove_if_no_direct_calls_p (struct cgraph_node *node) -{ - /* Extern inlines can always go, we will use the external definition. */ - if (DECL_EXTERNAL (node->decl)) - return true; - return (!node->address_taken - && cgraph_can_remove_if_no_direct_calls_and_refs_p (node) - && !ipa_ref_has_aliases_p (&node->ref_list)); -} - -/* Return true when function NODE can be removed from callgraph - if all direct calls are eliminated. */ - -static inline bool varpool_can_remove_if_no_refs (struct varpool_node *node) { return (!node->force_output && !node->used_from_other_partition |