struct c { double a; } __attribute((packed)) __attribute((aligned)); extern void abort(void); double g_expect = 32.25; void f(unsigned x, struct c y) { if (x != 0) abort(); if (y.a != g_expect) abort(); } struct c e = { 64.25 }; int main(void) { struct c d = { 32.25 }; f(0, d); g_expect = 64.25; f(0, e); return 0; }