From df9af2bb6b3d8fc40aa578ee5251c6cf0c0debef Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Mon, 18 Oct 2004 21:18:23 +0000 Subject: expr.c (expand_expr_real_1): Don't request a value to expand_assignment. * expr.c (expand_expr_real_1) [MODIFY_EXPR]: Don't request a value to expand_assignment. From-SVN: r89245 --- gcc/expr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'gcc/expr.c') diff --git a/gcc/expr.c b/gcc/expr.c index 459d3b3..358a634 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -8069,6 +8069,8 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, temp = 0; + gcc_assert (ignore); + /* Check for |= or &= of a bitfield of size one into another bitfield of size 1. In this case, (unless we need the result of the assignment) we can do this more efficiently with a @@ -8077,8 +8079,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, ??? At this point, we can't get a BIT_FIELD_REF here. But if things change so we do, this code should be enhanced to support it. */ - if (ignore - && TREE_CODE (lhs) == COMPONENT_REF + if (TREE_CODE (lhs) == COMPONENT_REF && (TREE_CODE (rhs) == BIT_IOR_EXPR || TREE_CODE (rhs) == BIT_AND_EXPR) && TREE_OPERAND (rhs, 0) == lhs @@ -8101,7 +8102,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, return const0_rtx; } - temp = expand_assignment (lhs, rhs, ! ignore); + temp = expand_assignment (lhs, rhs, 0); return temp; } -- cgit v1.1