diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-03-27 16:13:54 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-03-27 15:13:54 +0000 |
commit | 931c8e9a04bd7cb7c8f372a77e8061c46b19a742 (patch) | |
tree | 4730bf114427a89a09662f96bb28dfa1992ea3bf /gcc/ipa-inline-analysis.c | |
parent | d81c5030d1ca9920bc41de91819cef17c83a8805 (diff) | |
download | gcc-931c8e9a04bd7cb7c8f372a77e8061c46b19a742.zip gcc-931c8e9a04bd7cb7c8f372a77e8061c46b19a742.tar.gz gcc-931c8e9a04bd7cb7c8f372a77e8061c46b19a742.tar.bz2 |
re PR ipa/65600 (bost testsuite failure: ICE: Segmentation fault)
PR ipa/65600
* cgraph.c (cgraph_update_edges_for_call_stmt_node): Fix the case
of optimized out indirect call.
(redirect_to_unreachable): Always build symbol table node for
BUILT_IN_UNREACHABLE
* g++.dg/torture/pr65600.C: New testcase.
From-SVN: r221735
Diffstat (limited to 'gcc/ipa-inline-analysis.c')
-rw-r--r-- | gcc/ipa-inline-analysis.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index a9d885f..2f4eb9f 100644 --- a/gcc/ipa-inline-analysis.c +++ b/gcc/ipa-inline-analysis.c @@ -766,15 +766,15 @@ static struct cgraph_edge * redirect_to_unreachable (struct cgraph_edge *e) { struct cgraph_node *callee = !e->inline_failed ? e->callee : NULL; + struct cgraph_node *target = cgraph_node::get_create + (builtin_decl_implicit (BUILT_IN_UNREACHABLE)); if (e->speculative) - e = e->resolve_speculation (builtin_decl_implicit (BUILT_IN_UNREACHABLE)); + e = e->resolve_speculation (target->decl); else if (!e->callee) - e->make_direct (cgraph_node::get_create - (builtin_decl_implicit (BUILT_IN_UNREACHABLE))); + e->make_direct (target); else - e->redirect_callee (cgraph_node::get_create - (builtin_decl_implicit (BUILT_IN_UNREACHABLE))); + e->redirect_callee (target); struct inline_edge_summary *es = inline_edge_summary (e); e->inline_failed = CIF_UNREACHABLE; e->frequency = 0; |