expr.c (store_field): If BITSIZE is negative, use size of type.
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Sun, 24 Sep 2000 15:35:44 +0000 (15:35 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Sun, 24 Sep 2000 15:35:44 +0000 (11:35 -0400)
* expr.c (store_field): If BITSIZE is negative, use size of type.
(expand_expr, case COMPONENT_EXPR): Likewise.

From-SVN: r36588

gcc/ChangeLog
gcc/expr.c

index c6ecd38ca78e5501a090639556ada842bbe7f3e3..4b535509d034078094bab5b5a22b59d40e284370 100644 (file)
@@ -1,3 +1,8 @@
+Sun Sep 24 09:15:48 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * expr.c (store_field): If BITSIZE is negative, use size of type.
+       (expand_expr, case COMPONENT_EXPR): Likewise.
+
 Sun 24-Sep-2000 11:40:23 BST  Neil Booth  <NeilB@earthling.net>
 
        * cpplex.c: Update TODO comment.
index 6013c3e96d7eda943bf68d4ecf114d29c50569ec..01859220d9b8cf1973cf0b4f39b76f6533372498 100644 (file)
@@ -4992,8 +4992,9 @@ store_field (target, bitsize, bitpos, mode, exp, value_mode,
            align >>= 1;
 
          emit_block_move (target, temp,
-                          GEN_INT ((bitsize + BITS_PER_UNIT - 1)
-                                   / BITS_PER_UNIT),
+                          bitsize == -1 ? expr_size (exp)
+                          : GEN_INT ((bitsize + BITS_PER_UNIT - 1)
+                                     / BITS_PER_UNIT),
                           align);
 
          return value_mode == VOIDmode ? const0_rtx : target;
@@ -6927,8 +6928,9 @@ expand_expr (exp, target, tmode, modifier)
                  target = assign_temp (type, 0, 1, 1);
 
                emit_block_move (target, op0,
-                                GEN_INT ((bitsize + BITS_PER_UNIT - 1)
-                                         / BITS_PER_UNIT),
+                                bitsize == -1 ? expr_size  (exp)
+                                : GEN_INT ((bitsize + BITS_PER_UNIT - 1)
+                                           / BITS_PER_UNIT),
                                 BITS_PER_UNIT);
 
                return target;