diff options
author | Jan Hubicka <jh@suse.cz> | 2013-08-20 23:41:36 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2013-08-20 21:41:36 +0000 |
commit | bfa3b50aab75a28eb75af950df40db4e5c3263fe (patch) | |
tree | 390d24e3283c74189b8a80d82ac67e07c242a513 | |
parent | 8bc16536d66fce30459a3d35a4a648f4a9e95703 (diff) | |
download | gcc-bfa3b50aab75a28eb75af950df40db4e5c3263fe.zip gcc-bfa3b50aab75a28eb75af950df40db4e5c3263fe.tar.gz gcc-bfa3b50aab75a28eb75af950df40db4e5c3263fe.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cgraph.c | 8 |
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fa97b87..77dd86c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-08-20 Jan Hubicka <jh@suse.cz> + + 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 <dmalcolm@redhat.com> Revert my last two changes, r201865 and r201864: diff --git a/gcc/cgraph.c b/gcc/cgraph.c index c6850c6..19e64b7 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; |