aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2000-09-24 15:35:44 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2000-09-24 11:35:44 -0400
commitbd5dab534bc87446279c5b10f1fdbf8c2be6a68c (patch)
treed5132e49b5152e9bdd4ca0abb8e4d113d615a307 /gcc/expr.c
parent838f313bbdf80d22aca1751d272efc3c58c2b870 (diff)
downloadgcc-bd5dab534bc87446279c5b10f1fdbf8c2be6a68c.zip
gcc-bd5dab534bc87446279c5b10f1fdbf8c2be6a68c.tar.gz
gcc-bd5dab534bc87446279c5b10f1fdbf8c2be6a68c.tar.bz2
expr.c (store_field): If BITSIZE is negative, use size of type.
* expr.c (store_field): If BITSIZE is negative, use size of type. (expand_expr, case COMPONENT_EXPR): Likewise. From-SVN: r36588
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 6013c3e..0185922 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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;