From: Kazu Hirata Date: Mon, 18 Oct 2004 21:18:23 +0000 (+0000) Subject: expr.c (expand_expr_real_1): Don't request a value to expand_assignment. X-Git-Tag: releases/gcc-4.0.0~3926 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=df9af2bb6b3d8fc40aa578ee5251c6cf0c0debef;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fb1fe2f10e8b..ac8efa95bb34 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-10-18 Kazu Hirata + + * expr.c (expand_expr_real_1) [MODIFY_EXPR]: Don't request a + value to expand_assignment. + 2004-10-18 Kazu Hirata * tree-cfg.c (cleanup_tree_cfg): Don't iterate on diff --git a/gcc/expr.c b/gcc/expr.c index 459d3b35372c..358a634eb859 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; }