http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57748
--- Comment #20 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- (In reply to Richard Biener from comment #19) > volatile bitfield case to be audited as well: > > /* If the bitfield is volatile, we want to access it in the > field's mode, not the computed mode. > If a MEM has VOIDmode (external with incomplete type), > use BLKmode for it instead. */ > if (MEM_P (to_rtx)) > { > if (volatilep && flag_strict_volatile_bitfields > 0) > to_rtx = adjust_address (to_rtx, mode1, 0); > else if (GET_MODE (to_rtx) == VOIDmode) > to_rtx = adjust_address (to_rtx, BLKmode, 0); > } > > checks the wrong RTX if it got the movmisalign path. Or rather, > -fstrict-volatile bitfields doesn't seem to work properly for > misaligned accesses? Definitely. -fstrict-volatile-bitfields does not work at all. Especially not fo misaligned accesses, or packed structures. That's what Sanda Loosemore's patch is trying to fix. As I repeatedly told. Please have a look at it if you can. If flag_struct_volatile_bitfilds > 0 the mode1 is diffent here than without.