https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78428
--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> --- Before r218818, struct of 12 bytes is aligned at 4 bytes without -Os and 8 bytes with -Os. After r218818, it is always aligned at 8 bytes, which triggers struct store memory leak: movq %rax, b+8(%rip) Since b is 12 bytes and a is placed next to b, it overrides a.