ipa-inline.c (can_inline_edge_p): Pass caller info to ultiimate_alias_target.
authorJan Hubicka <jh@suse.cz>
Thu, 21 Apr 2016 09:08:08 +0000 (11:08 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Thu, 21 Apr 2016 09:08:08 +0000 (09:08 +0000)
* 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

gcc/ChangeLog
gcc/ipa-inline.c

index d58b38f04497c1136dce2e957ddf34a4aa005e44..d2a345cf7f5be57d2a613fdcd90e90aeb5ac5dfb 100644 (file)
@@ -1,3 +1,11 @@
+2016-04-20  Jan Hubicka  <jh@suse.cz>
+
+       * 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  <jh@suse.cz>
 
        PR ipa/70018
index 55899ef17302f2afaa122e7b49f354d691e9cc92..b855fc7f07cfb0854574a2934f3914d01e6729f3 100644 (file)
@@ -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;