aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2013-08-20 23:41:36 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2013-08-20 21:41:36 +0000
commitbfa3b50aab75a28eb75af950df40db4e5c3263fe (patch)
tree390d24e3283c74189b8a80d82ac67e07c242a513
parent8bc16536d66fce30459a3d35a4a648f4a9e95703 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/cgraph.c8
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;