diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-12-07 19:10:50 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-12-07 19:10:50 +0000 |
commit | 6f7e2d6ed1811533a05748b7d07e01aa356feed3 (patch) | |
tree | d7b5af4b797553f6965b1acd08878728c2806364 /gcc/cgraph.c | |
parent | 2d7869ef1f432aa4184c7822f629f34db27da4e0 (diff) | |
download | gcc-6f7e2d6ed1811533a05748b7d07e01aa356feed3.tar.gz |
PR c++/78692
* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Set lhs
var to lhs of new_stmt right before noreturn handling rather than to
lhs of e->call_stmt early.
* g++.dg/torture/pr78692.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243377 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 867e371a3f9..fd2465e81a6 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -1271,7 +1271,6 @@ cgraph_edge::redirect_call_stmt_to_callee (void) cgraph_edge *e = this; tree decl = gimple_call_fndecl (e->call_stmt); - tree lhs = gimple_call_lhs (e->call_stmt); gcall *new_stmt; gimple_stmt_iterator gsi; bool skip_bounds = false; @@ -1526,6 +1525,7 @@ cgraph_edge::redirect_call_stmt_to_callee (void) gimple_call_set_fntype (new_stmt, TREE_TYPE (e->callee->decl)); /* If the call becomes noreturn, remove the LHS if possible. */ + tree lhs = gimple_call_lhs (new_stmt); if (lhs && gimple_call_noreturn_p (new_stmt) && (VOID_TYPE_P (TREE_TYPE (gimple_call_fntype (new_stmt))) |