+2005-04-30 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * Apply:
+ 2004-10-21 Aldy Hernandez <aldyh@redhat.com>
+
+ PR target/18004.
+ * expmed.c (store_bit_field): Pass original 'value' before
+ recursing.
+
2005-04-22 Eric Botcazou <ebotcazou@libertysurf.fr>
* doc/invoke.texi (SPARC options): Document that -mapp-regs
unsigned HOST_WIDE_INT bitpos = bitnum % unit;
rtx op0 = str_rtx;
int byte_offset;
+ rtx orig_value;
enum machine_mode op_mode = mode_for_extraction (EP_insv, 3);
corresponding size. This can occur on a machine with 64 bit registers
that uses SFmode for float. This can also occur for unaligned float
structure fields. */
+ orig_value = value;
if (GET_MODE_CLASS (GET_MODE (value)) != MODE_INT
&& GET_MODE_CLASS (GET_MODE (value)) != MODE_PARTIAL_INT)
value = gen_lowpart ((GET_MODE (value) == VOIDmode
/* Fetch that unit, store the bitfield in it, then store
the unit. */
tempreg = copy_to_reg (op0);
- store_bit_field (tempreg, bitsize, bitpos, fieldmode, value,
+ store_bit_field (tempreg, bitsize, bitpos, fieldmode, orig_value,
total_size);
emit_move_insn (op0, tempreg);
return value;