*** empty log message ***
authorRichard Stallman <rms@gnu.org>
Wed, 13 May 1992 05:02:10 +0000 (05:02 +0000)
committerRichard Stallman <rms@gnu.org>
Wed, 13 May 1992 05:02:10 +0000 (05:02 +0000)
From-SVN: r968

gcc/fold-const.c

index 75f5c18eee11e36ee437b390107ac5d9f2b5971b..029f25cde241728f744c73fabcb3a8688e077cd4 100644 (file)
@@ -2748,9 +2748,13 @@ fold (expr)
        return convert (TREE_TYPE (t), TREE_OPERAND (TREE_OPERAND (t, 0), 0));
 
       if (TREE_CODE (TREE_OPERAND (t, 0)) == MODIFY_EXPR
-         && TREE_CONSTANT (TREE_OPERAND (TREE_OPERAND (t, 0), 1)))
+         && TREE_CONSTANT (TREE_OPERAND (TREE_OPERAND (t, 0), 1))
+         /* Detect assigning a bitfield.  */
+         && !(TREE_CODE (TREE_OPERAND (TREE_OPERAND (t, 0), 0)) == COMPONENT_REF
+              && DECL_BIT_FIELD (TREE_OPERAND (TREE_OPERAND (TREE_OPERAND (t, 0), 0), 1))))
        {
-         /* Don't leave an assignment inside a conversion.  */
+         /* Don't leave an assignment inside a conversion
+            unless assiging a bitfield.  */
          tree prev = TREE_OPERAND (t, 0);
          TREE_OPERAND (t, 0) = TREE_OPERAND (prev, 1);
          /* First do the assignment, then return converted constant.  */