OSDN Git Service

* expr.c (expand_expr_real_1) [MODIFY_EXPR]: Don't request a
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Oct 2004 21:18:23 +0000 (21:18 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Oct 2004 21:18:23 +0000 (21:18 +0000)
value to expand_assignment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89245 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/expr.c

index fb1fe2f..ac8efa9 100644 (file)
@@ -1,5 +1,10 @@
 2004-10-18  Kazu Hirata  <kazu@cs.umass.edu>
 
+       * expr.c (expand_expr_real_1) [MODIFY_EXPR]: Don't request a
+       value to expand_assignment.
+
+2004-10-18  Kazu Hirata  <kazu@cs.umass.edu>
+
        * tree-cfg.c (cleanup_tree_cfg): Don't iterate on
        thread_jumps.
        (thread_jumps): Iterate until no new forwarder block arises.
index 459d3b3..358a634 100644 (file)
@@ -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;
       }