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.