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.