summaryrefslogtreecommitdiff
path: root/gcc/ipa-inline.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-09 19:19:41 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-09 19:19:41 +0000
commit6db08adcc2b7956aecd4dcfc9c576c84c0b0358d (patch)
treeca835f110fff1af809098b873bed9ffc70011b18 /gcc/ipa-inline.c
parent48347b9e6f15e9e16223a7e4ceea2a4d30596009 (diff)
downloadgcc-6db08adcc2b7956aecd4dcfc9c576c84c0b0358d.tar.gz
PR other/37419
* ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument to pointer to vector pointer. * ipa-prop.c (ipa_propagate_indirect_call_infos, propagate_info_to_inlined_callees): Likewise. (update_call_notes_after_inlining): Likewise. Push new indirect edge to *new_edges instead of new_edges. Reread IPA_EDGE_REF after ipa_check_create_edge_args. * ipa-inline.c (cgraph_decide_recursive_inlining): Change last argument to pointer to vector pointer. (cgraph_decide_inlining_of_small_function): Adjust cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos calls. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140168 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa-inline.c')
-rw-r--r--gcc/ipa-inline.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index 66b9bac79de..88566fed007 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -646,11 +646,12 @@ lookup_recursive_calls (struct cgraph_node *node, struct cgraph_node *where,
/* Decide on recursive inlining: in the case function has recursive calls,
inline until body size reaches given argument. If any new indirect edges
- are discovered in the process, add them to NEW_EDGES, unless it is NULL. */
+ are discovered in the process, add them to *NEW_EDGES, unless NEW_EDGES
+ is NULL. */
static bool
cgraph_decide_recursive_inlining (struct cgraph_node *node,
- VEC (cgraph_edge_p, heap) *new_edges)
+ VEC (cgraph_edge_p, heap) **new_edges)
{
int limit = PARAM_VALUE (PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO);
int max_depth = PARAM_VALUE (PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO);
@@ -980,7 +981,9 @@ cgraph_decide_inlining_of_small_functions (void)
where = edge->caller;
if (where->global.inlined_to)
where = where->global.inlined_to;
- if (!cgraph_decide_recursive_inlining (where, new_indirect_edges))
+ if (!cgraph_decide_recursive_inlining (where,
+ flag_indirect_inlining
+ ? &new_indirect_edges : NULL))
continue;
if (flag_indirect_inlining)
add_new_edges_to_heap (heap, new_indirect_edges);
@@ -1002,7 +1005,7 @@ cgraph_decide_inlining_of_small_functions (void)
cgraph_mark_inline_edge (edge, true);
if (flag_indirect_inlining)
{
- ipa_propagate_indirect_call_infos (edge, new_indirect_edges);
+ ipa_propagate_indirect_call_infos (edge, &new_indirect_edges);
add_new_edges_to_heap (heap, new_indirect_edges);
}
update_callee_keys (heap, callee, updated_nodes);