From: hubicka Date: Thu, 21 Apr 2016 09:08:08 +0000 (+0000) Subject: * ipa-inline.c (can_inline_edge_p): Pass caller info to X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fbcea800f105bb3e57bcbab845d2c95032467590;p=thirdparty%2Fgcc.git * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235319 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d58b38f04497..d2a345cf7f5b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2016-04-20 Jan Hubicka + + * 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. + 2016-04-20 Jan Hubicka PR ipa/70018 diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 55899ef17302..b855fc7f07cf 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;