[Bug middle-end/65409] [4.8/4.9/5 Regression] ICE in store_field
ebotcazou at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Mar 13 10:43:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65409
--- Comment #5 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
This looks redundant to me, the following is sufficient:
Index: expr.c
===================================================================
--- expr.c (revision 221407)
+++ expr.c (working copy)
@@ -6645,11 +6645,12 @@ store_field (rtx target, HOST_WIDE_INT b
&& mode != TYPE_MODE (TREE_TYPE (exp)))
temp = convert_modes (mode, TYPE_MODE (TREE_TYPE (exp)), temp, 1);
- /* If the modes of TEMP and TARGET are both BLKmode, both
- must be in memory and BITPOS must be aligned on a byte
- boundary. If so, we simply do a block copy. Likewise
- for a BLKmode-like TARGET. */
- if (GET_MODE (temp) == BLKmode
+ /* If TEMP is not a PARALLEL (see below) and its mode and that of TARGET
+ are both BLKmode, both must be in memory and BITPOS must be aligned
+ on a byte boundary. If so, we simply do a block copy. Likewise for
+ a BLKmode-like TARGET. */
+ if (GET_CODE (temp) != PARALLEL
+ && GET_MODE (temp) == BLKmode
&& (GET_MODE (target) == BLKmode
|| (MEM_P (target)
&& GET_MODE_CLASS (GET_MODE (target)) == MODE_INT
More information about the Gcc-bugs
mailing list