diff options
Diffstat (limited to 'gcc/ipa-fnsummary.cc')
-rw-r--r-- | gcc/ipa-fnsummary.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/ipa-fnsummary.cc b/gcc/ipa-fnsummary.cc index e7b81d8..bf98a44 100644 --- a/gcc/ipa-fnsummary.cc +++ b/gcc/ipa-fnsummary.cc @@ -271,6 +271,8 @@ redirect_to_unreachable (struct cgraph_edge *e) es->call_stmt_time = 0; if (callee) callee->remove_symbol_and_inline_clones (); + if (e->has_callback) + e->purge_callback_edges (); return e; } @@ -3119,8 +3121,7 @@ analyze_function_body (struct cgraph_node *node, bool early) for (cbe = edge->first_callback_edge (); cbe; cbe = cbe->next_callback_edge ()) { - ipa_call_summary *es2 = ipa_call_summaries->get (cbe); - es2 = ipa_call_summaries->get_create (cbe); + ipa_call_summary *es2 = ipa_call_summaries->get_create (cbe); ipa_call_summaries->duplicate (edge, cbe, es, es2); /* Unlike speculative edges, callback edges have no real size or time; the call doesn't exist. Reflect that in |