https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95251
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2020-05-22 Target| |x86_64-*-* i?86-*-* Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Keywords| |missed-optimization --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. We expand from x7b00 (u64 x, u8 b) { struct mr D.2257; <bb 2> [local count: 1073741824]: MEM <char[6]> [(struct mr *)&D.2257 + 2B] = {}; D.2257.u.i.a = 7; D.2257.u.i.b = b_4(D); D.2257.x = x_6(D); return D.2257; it might be the zeroing intoduces the SSE usage, with -mno-sse we're not really better though: x7b00: .LFB4: .cfi_startproc xorl %eax, %eax movq %rdi, %rdx movl $6, %ecx leaq -24(%rsp), %rdi rep stosb movq %rsi, %rcx movabsq $281474976710655, %rax andq -24(%rsp), %rax salq $16, %rax movb $7, %al movb %cl, %ah ret