aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-02-10 16:06:20 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-02-10 16:06:20 +0100
commite199dd0a2fc0d1ffea997f2ba5e42d4bc4c32518 (patch)
treed04fa6cffeb76dd4444658f8e2f8360ed9d03342 /gcc/gimplify.c
parentd6b38027a031b8a4b74ff54129e0689822f483fc (diff)
downloadgcc-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.c3
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;
}