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
+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
}
}
+ /* 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. */