http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55882
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-08 15:25:46 UTC --- GCC clealy thinks that (insn 21 20 0 2 (set (mem/j:SI (plus:SI (reg/f:SI 195) (const_int 10 [0xa])) [0+-2 S4 A32]) (reg:SI 201)) t.i:85 -1 is 4-byte aligned (but it _does_ have this strange MEM_OFFSET setting ... which should be useless without a MEM_EXPR). Does unsigned short testfunction(void) { mystruct dmfe[8]; unsigned i = 0; dmfe[0].use_alt_rd_dqs = 1; dmfe[i].use_alt_rd_dqs = 0; return dmfe[0].use_alt_rd_dqs; } extern void abort (void); int main () { if (testfunction() != 0) abort (); } abort for you?