support BLKmode inputs for store_bit_field
Revision 228586 changed useless_type_conversion_p and added mode changes for MEM:BLKmode inputs in store_expr_with_bounds, but it missed store_bit_field. This caused ada/rts/s-regpat.ads to fail compilation on x86_64-linux-gnu. for gcc/ChangeLog PR middle-end/67912 * expmed.c (store_bit_field_1): Adjust mode of BLKmode inputs. From-SVN: r228774
This commit is contained in:
parent
7802cb1eef
commit
e5c2c8d7af
|
@ -1,3 +1,8 @@
|
|||
2015-10-13 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR middle-end/67912
|
||||
* expmed.c (store_bit_field_1): Adjust mode of BLKmode inputs.
|
||||
|
||||
2015-10-12 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/sparc/sparc.h (SPARC_STACK_ALIGN): Implement using
|
||||
|
|
|
@ -757,6 +757,14 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
|
|||
}
|
||||
}
|
||||
|
||||
/* We allow move between structures of same size but different mode.
|
||||
If source is in memory and the mode differs, simply change the memory. */
|
||||
if (GET_MODE (value) == BLKmode && GET_MODE (op0) != BLKmode)
|
||||
{
|
||||
gcc_assert (MEM_P (value));
|
||||
value = adjust_address_nv (value, GET_MODE (op0), 0);
|
||||
}
|
||||
|
||||
/* Storing an lsb-aligned field in a register
|
||||
can be done with a movstrict instruction. */
|
||||
|
||||
|
|
Loading…
Reference in New Issue