From bfa3b50aab75a28eb75af950df40db4e5c3263fe Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Tue, 20 Aug 2013 23:41:36 +0200 Subject: [PATCH] re PR bootstrap/58186 (LTO profiledbootstrap fails in stage feedback for fortran/frontend-passes.c with "edge ... has no corresponding call_stmt") PR bootstrap/58186 * cgraph.c (cgraph_add_edge_to_call_site_hash): Overwrite hash entry for direct edges. (cgraph_turn_edge_to_speculative): Fix setting of can_throw_external. From-SVN: r201891 --- gcc/ChangeLog | 7 +++++++ gcc/cgraph.c | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fa97b87157c..77dd86cf9c8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-08-20 Jan Hubicka + + PR bootstrap/58186 + * cgraph.c (cgraph_add_edge_to_call_site_hash): Overwrite hash + entry for direct edges. + (cgraph_turn_edge_to_speculative): Fix setting of can_throw_external. + 2013-08-20 David Malcolm Revert my last two changes, r201865 and r201864: diff --git a/gcc/cgraph.c b/gcc/cgraph.c index c6850c60c31..19e64b79776 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -701,6 +701,8 @@ cgraph_add_edge_to_call_site_hash (struct cgraph_edge *e) if (*slot) { gcc_assert (((struct cgraph_edge *)*slot)->speculative); + if (e->callee) + *slot = e; return; } gcc_assert (!*slot || e->speculative); @@ -1083,8 +1085,10 @@ cgraph_turn_edge_to_speculative (struct cgraph_edge *e, e2 = cgraph_create_edge (n, n2, e->call_stmt, direct_count, direct_frequency); initialize_inline_failed (e2); e2->speculative = true; - e2->call_stmt = e->call_stmt; - e2->can_throw_external = e->can_throw_external; + if (TREE_NOTHROW (n2->symbol.decl)) + e2->can_throw_external = false; + else + e2->can_throw_external = e->can_throw_external; e2->lto_stmt_uid = e->lto_stmt_uid; e->count -= e2->count; e->frequency -= e2->frequency; -- 2.30.2