diff options
author | Jason Merrill <merrill@gnu.org> | 1994-04-20 18:12:36 +0000 |
---|---|---|
committer | Jason Merrill <merrill@gnu.org> | 1994-04-20 18:12:36 +0000 |
commit | 6fcc9690b3dad9ecb8fd7233e96308342d9cdf5e (patch) | |
tree | c278c11b98e8d0fbdbbb5f0b5ca9ba37d4c03129 | |
parent | c8fc4697544088331ea429b51ac31d6777be387e (diff) | |
download | gcc-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.c | 12 |
1 files changed, 3 insertions, 9 deletions
@@ -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); } } |