Commit ce64861e by Richard Kenner Committed by Richard Kenner

expr.c (store_constructor_field): If bit position is not multiple of alignment…

expr.c (store_constructor_field): If bit position is not multiple of alignment of TARGET's mode, use BLKmode.

	* expr.c (store_constructor_field): If bit position is not multiple
	of alignment of TARGET's mode, use BLKmode.

From-SVN: r30713
parent a2b99161
Mon Nov 29 16:56:42 1999 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* expr.c (store_constructor_field): If bit position is not multiple
of alignment of TARGET's mode, use BLKmode.
* expr.c (expand_expr_unaligned): Add more code from full case
that is needed when OP0 is in a register.
......
......@@ -4040,9 +4040,14 @@ store_constructor_field (target, bitsize, bitpos,
&& (bitpos == 0 || GET_CODE (target) == MEM))
{
if (bitpos != 0)
target = change_address (target, VOIDmode,
plus_constant (XEXP (target, 0),
bitpos / BITS_PER_UNIT));
target
= change_address (target,
GET_MODE (target) == BLKmode
|| 0 != (bitpos
% GET_MODE_ALIGNMENT (GET_MODE (target)))
? BLKmode : VOIDmode,
plus_constant (XEXP (target, 0),
bitpos / BITS_PER_UNIT));
store_constructor (exp, target, align, cleared);
}
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment