+2001-07-03 Andrew Haley <aph@redhat.com>
+
+ * expmed.c (store_fixed_bit_field): Don't use a mode bigger than
+ the mode of the memory location.
+
2001-07-09 Bo Thorsen <bo@suse.co.uk>
* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix x86-64 vtable support.
{
/* Get the proper mode to use for this field. We want a mode that
includes the entire field. If such a mode would be larger than
- a word, we won't be doing the extraction the normal way. */
+ a word, we won't be doing the extraction the normal way.
+ We don't want a mode bigger than the destination. */
+ mode = GET_MODE (op0);
+ if (GET_MODE_BITSIZE (mode) == 0
+ || GET_MODE_BITSIZE (mode) > GET_MODE_BITSIZE (word_mode))
+ mode = word_mode;
mode = get_best_mode (bitsize, bitpos + offset * BITS_PER_UNIT,
- struct_align, word_mode,
+ struct_align, mode,
GET_CODE (op0) == MEM && MEM_VOLATILE_P (op0));
if (mode == VOIDmode)