aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/cp-gimplify.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2011-11-12 19:44:39 -0500
committerJason Merrill <jason@gcc.gnu.org>2011-11-12 19:44:39 -0500
commitd0ad58f94e22dcf877cc359fe8f07e30836c7467 (patch)
tree27cac8d3632c8a697d809b3cfff114f8ef5675e8 /gcc/cp/cp-gimplify.c
parentf2628dce2494cefe0144f733c930d6b3b2edf728 (diff)
downloadgcc-d0ad58f94e22dcf877cc359fe8f07e30836c7467.zip
gcc-d0ad58f94e22dcf877cc359fe8f07e30836c7467.tar.gz
gcc-d0ad58f94e22dcf877cc359fe8f07e30836c7467.tar.bz2
re PR c++/51060 (Temporary object stack space is not re-used)
PR c++/51060 * gimplify.c (gimplify_target_expr): Add a clobber to the cleanup. (gimplify_modify_expr): Don't try to simplify it. * cp/cp-gimplify.c (cp_gimplify_expr): Leave clobbers alone. From-SVN: r181332
Diffstat (limited to 'gcc/cp/cp-gimplify.c')
-rw-r--r--gcc/cp/cp-gimplify.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index af45f59..9968c3d 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -569,7 +569,8 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
else if ((is_gimple_lvalue (op1) || INDIRECT_REF_P (op1)
|| (TREE_CODE (op1) == CONSTRUCTOR
- && CONSTRUCTOR_NELTS (op1) == 0)
+ && CONSTRUCTOR_NELTS (op1) == 0
+ && !TREE_CLOBBER_P (op1))
|| (TREE_CODE (op1) == CALL_EXPR
&& !CALL_EXPR_RETURN_SLOT_OPT (op1)))
&& is_really_empty_class (TREE_TYPE (op0)))