diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-02-10 16:06:20 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-02-10 16:06:20 +0100 |
commit | e199dd0a2fc0d1ffea997f2ba5e42d4bc4c32518 (patch) | |
tree | d04fa6cffeb76dd4444658f8e2f8360ed9d03342 /gcc/gimplify.c | |
parent | d6b38027a031b8a4b74ff54129e0689822f483fc (diff) | |
download | gcc-e199dd0a2fc0d1ffea997f2ba5e42d4bc4c32518.zip gcc-e199dd0a2fc0d1ffea997f2ba5e42d4bc4c32518.tar.gz gcc-e199dd0a2fc0d1ffea997f2ba5e42d4bc4c32518.tar.bz2 |
re PR ipa/69241 (ICE with noreturn and function that return non-POD)
PR ipa/69241
PR c++/69649
* gimplify.c (gimplify_modify_expr): Set lhs even for noreturn
calls if the return type is TREE_ADDRESSABLE.
* cgraphunit.c (cgraph_node::expand_thunk): Likewise.
* ipa-split.c (split_function): Fix doubled "we" in comment.
Use void return type for the split part even if
!split_point->split_part_set_retval.
* g++.dg/ipa/pr69241-1.C: New test.
* g++.dg/ipa/pr69241-2.C: New test.
* g++.dg/ipa/pr69241-3.C: New test.
* g++.dg/ipa/pr69649.C: New test.
Co-Authored-By: Patrick Palka <ppalka@gcc.gnu.org>
From-SVN: r233271
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index b0ee27e..6aa9db2 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -4828,7 +4828,8 @@ gimplify_modify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, } } notice_special_calls (call_stmt); - if (!gimple_call_noreturn_p (call_stmt)) + if (!gimple_call_noreturn_p (call_stmt) + || TREE_ADDRESSABLE (TREE_TYPE (*to_p))) gimple_call_set_lhs (call_stmt, *to_p); assign = call_stmt; } |