From e56f5f3e5aad70d12c6ea019c99028a4daf5dc2b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 9 Sep 2008 21:19:41 +0200 Subject: re PR other/37419 (mpfr related memory corruption) 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. From-SVN: r140168 --- gcc/ipa-inline.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'gcc/ipa-inline.c') diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 66b9bac..88566fe 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); -- cgit v1.1