aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-05-18 23:23:07 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-05-18 23:23:07 +0200
commit960db8ec97c6b2d8381040f71b5852d1854197da (patch)
tree8d9d18a6c3039fc2f51f8f07c4a559a55dd58084 /gcc/cgraph.c
parent78885314088bb56f3c4fa60e4f0b6dfd987b3691 (diff)
downloadgcc-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.c3
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)
{