https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98335
--- Comment #1 from Michael Colavita <mcolavita at fb dot com> --- A similar problem appears to occur for the following example: struct Data { long a; union { long u; struct { char b; char pad[3]; }; }; }; Data val(long d, long e) { return { d, e }; } Yielding: movq %rdi, %xmm0 movq %rsi, %xmm1 punpcklqdq %xmm1, %xmm0 movaps %xmm0, -56(%rsp) movq -56(%rsp), %rax movq -48(%rsp), %rdx ret