https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114344
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (insn 5 4 6 (set (reg/f:SI 115) (symbol_ref:SI ("*.LANCHOR0") [flags 0x182])) "/app/example.cpp":13:13 -1 (nil)) (insn 6 5 7 (set (reg:SI 116) (const_int 305419896 [0x12345678])) "/app/example.cpp":13:13 -1 (nil)) (insn 7 6 0 (set (mem/v/c:SI (plus:SI (reg/f:SI 115) (const_int 4 [0x4])) [2 sD.6114.iD.6110+0 S4 A32]) (reg:SI 116)) "/app/example.cpp":13:13 -1 (nil)) .align 2 .set .LANCHOR0,. + 0 .type s, %object .size s, 28 s: The s variable is still aligned to 4 bytes so s.i is still aligned. Doing: `s __attribute__((aligned(1)));` Makes the variable s unknown alignment and we get the multiple stores then.