aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <merrill@gnu.org>1994-04-20 18:12:36 +0000
committerJason Merrill <merrill@gnu.org>1994-04-20 18:12:36 +0000
commit6fcc9690b3dad9ecb8fd7233e96308342d9cdf5e (patch)
treec278c11b98e8d0fbdbbb5f0b5ca9ba37d4c03129
parentc8fc4697544088331ea429b51ac31d6777be387e (diff)
downloadgcc-6fcc9690b3dad9ecb8fd7233e96308342d9cdf5e.zip
gcc-6fcc9690b3dad9ecb8fd7233e96308342d9cdf5e.tar.gz
gcc-6fcc9690b3dad9ecb8fd7233e96308342d9cdf5e.tar.bz2
(expand_expr): Don't force ignore when expanding the subexpression of a WITH_CLEANUP_EXPR.
(expand_expr): Don't force ignore when expanding the subexpression of a WITH_CLEANUP_EXPR. Don't check ignore when deciding whether or not to expand the cleanup for a TARGET_EXPR. From-SVN: r7100
-rw-r--r--gcc/expr.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 4cb4c46..f7c4b8a 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4588,9 +4588,7 @@ expand_expr (exp, target, tmode, modifier)
if (RTL_EXPR_RTL (exp) == 0)
{
RTL_EXPR_RTL (exp)
- = expand_expr (TREE_OPERAND (exp, 0),
- target ? target : const0_rtx,
- tmode, modifier);
+ = expand_expr (TREE_OPERAND (exp, 0), target, tmode, modifier);
cleanups_this_call
= tree_cons (NULL_TREE, TREE_OPERAND (exp, 2), cleanups_this_call);
/* That's it for this cleanup. */
@@ -5602,12 +5600,7 @@ expand_expr (exp, target, tmode, modifier)
/* All temp slots at this level must not conflict. */
preserve_temp_slots (target);
DECL_RTL (slot) = target;
- }
- /* We set IGNORE when we know that we're already
- doing this for a cleanup. */
- if (ignore == 0)
- {
/* Since SLOT is not known to the called function
to belong to its stack frame, we must build an explicit
cleanup. This case occurs when we must build up a reference
@@ -5618,7 +5611,8 @@ expand_expr (exp, target, tmode, modifier)
if (TREE_OPERAND (exp, 2) == 0)
TREE_OPERAND (exp, 2) = maybe_build_cleanup (slot);
if (TREE_OPERAND (exp, 2))
- cleanups_this_call = tree_cons (NULL_TREE, TREE_OPERAND (exp, 2),
+ cleanups_this_call = tree_cons (NULL_TREE,
+ TREE_OPERAND (exp, 2),
cleanups_this_call);
}
}