diff options
author | Jason Merrill <jason@redhat.com> | 2011-11-12 19:44:39 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-11-12 19:44:39 -0500 |
commit | d0ad58f94e22dcf877cc359fe8f07e30836c7467 (patch) | |
tree | 27cac8d3632c8a697d809b3cfff114f8ef5675e8 /gcc/cp/cp-gimplify.c | |
parent | f2628dce2494cefe0144f733c930d6b3b2edf728 (diff) | |
download | gcc-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.c | 3 |
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))) |