diff options
author | Jan Hubicka <jh@suse.cz> | 2016-04-21 11:08:08 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2016-04-21 09:08:08 +0000 |
commit | e6007a27bdcfa46128c25db1471c2565392dba80 (patch) | |
tree | 2e52f5a9248b3cd9cae070ab471084c3c15de0f2 /gcc/ipa-inline.c | |
parent | a2b056a364e622aac29160bb21fe637d5f6c9519 (diff) | |
download | gcc-e6007a27bdcfa46128c25db1471c2565392dba80.zip gcc-e6007a27bdcfa46128c25db1471c2565392dba80.tar.gz gcc-e6007a27bdcfa46128c25db1471c2565392dba80.tar.bz2 |
ipa-inline.c (can_inline_edge_p): Pass caller info to ultiimate_alias_target.
* ipa-inline.c (can_inline_edge_p): Pass caller info to
ultiimate_alias_target.
(update_callee_keys): Likewise.
(lookup_recursive_calls): Likewise.
(speculation_useful_p): Likewise.
From-SVN: r235319
Diffstat (limited to 'gcc/ipa-inline.c')
-rw-r--r-- | gcc/ipa-inline.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 55899ef..b855fc7 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -313,9 +313,9 @@ can_inline_edge_p (struct cgraph_edge *e, bool report, bool inlinable = true; enum availability avail; - cgraph_node *callee = e->callee->ultimate_alias_target (&avail); cgraph_node *caller = e->caller->global.inlined_to ? e->caller->global.inlined_to : e->caller; + cgraph_node *callee = e->callee->ultimate_alias_target (&avail, caller); tree caller_tree = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (caller->decl); tree callee_tree = callee ? DECL_FUNCTION_SPECIFIC_OPTIMIZATION (callee->decl) : NULL; @@ -1382,7 +1382,7 @@ update_callee_keys (edge_heap_t *heap, struct cgraph_node *node, growth chould have just increased and consequentely badness metric don't need updating. */ if (e->inline_failed - && (callee = e->callee->ultimate_alias_target (&avail)) + && (callee = e->callee->ultimate_alias_target (&avail, e->caller)) && inline_summaries->get (callee)->inlinable && avail >= AVAIL_AVAILABLE && !bitmap_bit_p (updated_nodes, callee->uid)) @@ -1425,7 +1425,7 @@ lookup_recursive_calls (struct cgraph_node *node, struct cgraph_node *where, for (e = where->callees; e; e = e->next_callee) if (e->callee == node - || (e->callee->ultimate_alias_target (&avail) == node + || (e->callee->ultimate_alias_target (&avail, e->caller) == node && avail > AVAIL_INTERPOSABLE)) { /* When profile feedback is available, prioritize by expected number @@ -1624,7 +1624,8 @@ bool speculation_useful_p (struct cgraph_edge *e, bool anticipate_inlining) { enum availability avail; - struct cgraph_node *target = e->callee->ultimate_alias_target (&avail); + struct cgraph_node *target = e->callee->ultimate_alias_target (&avail, + e->caller); struct cgraph_edge *direct, *indirect; struct ipa_ref *ref; |