diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-05-18 23:23:07 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-05-18 23:23:07 +0200 |
commit | 960db8ec97c6b2d8381040f71b5852d1854197da (patch) | |
tree | 8d9d18a6c3039fc2f51f8f07c4a559a55dd58084 /gcc/cgraph.c | |
parent | 78885314088bb56f3c4fa60e4f0b6dfd987b3691 (diff) | |
download | gcc-960db8ec97c6b2d8381040f71b5852d1854197da.zip gcc-960db8ec97c6b2d8381040f71b5852d1854197da.tar.gz gcc-960db8ec97c6b2d8381040f71b5852d1854197da.tar.bz2 |
re PR c++/71100 (Internal compiler error while calling a pointer to member function that throws)
PR c++/71100
* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Don't drop
lhs if it has TREE_ADDRESSABLE type.
* g++.dg/opt/pr71100.C: New test.
From-SVN: r236430
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 6fcdbdd..cf9192f 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -1515,7 +1515,8 @@ cgraph_edge::redirect_call_stmt_to_callee (void) /* If the call becomes noreturn, remove the LHS if possible. */ if (lhs && (gimple_call_flags (new_stmt) & ECF_NORETURN) - && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (lhs))) == INTEGER_CST) + && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (lhs))) == INTEGER_CST + && !TREE_ADDRESSABLE (TREE_TYPE (lhs))) { if (TREE_CODE (lhs) == SSA_NAME) { |