From e8aec9755b36ed33a91ea8f16e8dfa97bf0cde87 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Mon, 26 Aug 2013 17:23:48 +0200 Subject: [PATCH] ipa-inline-transform.c (inline_transform): Be ready for basic block to be changed by edge redirection. * ipa-inline-transform.c (inline_transform): Be ready for basic block to be changed by edge redirection. From-SVN: r201997 --- gcc/ChangeLog | 5 +++++ gcc/ipa-inline-transform.c | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d004d5496a8..41d2b4167ed 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-08-26 Jan Hubicka + + * ipa-inline-transform.c (inline_transform): Be ready for basic block + to be changed by edge redirection. + 2013-08-26 Jan Hubicka * cgraph.c (cgraph_speculative_call_info): Fix parameter order and formating; diff --git a/gcc/ipa-inline-transform.c b/gcc/ipa-inline-transform.c index 8ead336de64..7f835eaf836 100644 --- a/gcc/ipa-inline-transform.c +++ b/gcc/ipa-inline-transform.c @@ -412,7 +412,7 @@ unsigned int inline_transform (struct cgraph_node *node) { unsigned int todo = 0; - struct cgraph_edge *e; + struct cgraph_edge *e, *next; /* FIXME: Currently the pass manager is adding inline transform more than once to some clones. This needs revisiting after WPA cleanups. */ @@ -424,8 +424,11 @@ inline_transform (struct cgraph_node *node) if (preserve_function_body_p (node)) save_inline_function_body (node); - for (e = node->callees; e; e = e->next_callee) - cgraph_redirect_edge_call_stmt_to_callee (e); + for (e = node->callees; e; e = next) + { + next = e->next_callee; + cgraph_redirect_edge_call_stmt_to_callee (e); + } ipa_remove_all_references (&node->symbol.ref_list); timevar_push (TV_INTEGRATION); -- 2.30.2