aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2001-12-04 10:30:04 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2001-12-04 10:30:04 +0000
commitd1bd43d95082914bdc5e6f782ed0a919ff4305e2 (patch)
tree764fcb1b30f9b79f8a0f0dc4fa3f07a61527c096 /gcc/expr.c
parent1b3ea405b0f468e456251a24fede3012be58b3ff (diff)
downloadgcc-d1bd43d95082914bdc5e6f782ed0a919ff4305e2.zip
gcc-d1bd43d95082914bdc5e6f782ed0a919ff4305e2.tar.gz
gcc-d1bd43d95082914bdc5e6f782ed0a919ff4305e2.tar.bz2
stmt.c (expand_expr_stmt): Keep last_expr_value non-NULL iff we're interested in the result.
* stmt.c (expand_expr_stmt): Keep last_expr_value non-NULL iff we're interested in the result. Use it to tell whether to ignore results of enclosed expressions. (expand_start_stmt_expr): Added new argument, and initialize last_expr_value accordingly. * tree.h (expand_start_stmt_expr): Adjusted declaration. * c-common.c (c_expand_expr): Adjust call. * expr.c (expand_expr) [EXPR_WFL]: Pass const0_rtx down if ignoring the result. From-SVN: r47607
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 659ff03..1a4681e 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6528,7 +6528,9 @@ expand_expr (exp, target, tmode, modifier)
if (EXPR_WFL_EMIT_LINE_NOTE (exp))
emit_line_note (input_filename, lineno);
/* Possibly avoid switching back and forth here. */
- to_return = expand_expr (EXPR_WFL_NODE (exp), target, tmode, modifier);
+ to_return = expand_expr (EXPR_WFL_NODE (exp),
+ target || ! ignore ? target : const0_rtx,
+ tmode, modifier);
input_filename = saved_input_filename;
lineno = saved_lineno;
return to_return;