[Bug middle-end/57748] [4.7/4.8/4.9 Regression] ICE when expanding assignment to unaligned zero-sized array
bernd.edlinger at hotmail dot de
gcc-bugzilla@gcc.gnu.org
Thu Nov 14 15:19:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57748
--- Comment #44 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
Hi Richard,
this 59143 issue is very similar to what Sandra encountered with her patch.
but it is not volatile in that example.
I can not reproduce that on the ARM.
But I think it is possible that the other problem still prevails
if I apply my Part 2 patch, and Sandra's Bit-field patch.
I think the mode of the struct is QImode, from expanding the inner reference.
does not have room for the array.
and it is not overwritten,
maybe Sandra's update patch contains the key to resolve this:
+ else if (MEM_P (str_rtx)
+ && MEM_VOLATILE_P (str_rtx) // REMOVE THIS.
+ && flag_strict_volatile_bitfields > 0) // AND THIS.
+ /* This is a case where -fstrict-volatile-bitfields doesn't apply
+ because we can't do a single access in the declared mode of the field.
+ Since the incoming STR_RTX has already been adjusted to that mode,
+ fall back to word mode for subsequent logic. */
+ str_rtx = adjust_address (str_rtx, word_mode, 0);
Can you approve my part 2 ?
Then we can see if the recursion is still happening there.
Bernd.
More information about the Gcc-bugs
mailing list