https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56511
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |12.0 Status|UNCONFIRMED |RESOLVED Resolution|--- |DUPLICATE --- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> --- Fixed for GCC 12: [hjl@gnu-skl-2 gcc]$ cat x2.c #include <string.h> typedef float vec __attribute__((vector_size(32))); typedef struct S { vec v; char __attribute__((aligned(__alignof__(vec)))) c[sizeof(vec)]; } S; void assign_vec(S* s, const vec* v) { s->v = *v; } void memcpy_vec(S* s, const vec* v) { memcpy(&s->v, v, sizeof(vec)); } void memcpy_char(S* s, const vec* v) { memcpy(s->c, v, sizeof(vec)); } [hjl@gnu-skl-2 gcc]$ ./xgcc -B./ -S -O3 -march=haswell x2.c [hjl@gnu-skl-2 gcc]$ cat x2.s .file "x2.c" .text .p2align 4 .globl assign_vec .type assign_vec, @function assign_vec: .LFB0: .cfi_startproc vmovaps (%rsi), %ymm0 vmovaps %ymm0, (%rdi) vzeroupper ret .cfi_endproc .LFE0: .size assign_vec, .-assign_vec .p2align 4 .globl memcpy_vec .type memcpy_vec, @function memcpy_vec: .LFB1: .cfi_startproc vmovdqu (%rsi), %ymm15 vmovdqu %ymm15, (%rdi) vzeroupper ret .cfi_endproc .LFE1: .size memcpy_vec, .-memcpy_vec .p2align 4 .globl memcpy_char .type memcpy_char, @function memcpy_char: .LFB2: .cfi_startproc vmovdqu (%rsi), %ymm15 vmovdqu %ymm15, 32(%rdi) vzeroupper ret .cfi_endproc .LFE2: .size memcpy_char, .-memcpy_char .ident "GCC: (GNU) 12.0.0 20210805 (experimental) [master revision f7aa81892eb:82bfff3e5fa:c16f21c7cf97ce48967e42d3b5d22ea169a9c2c8]" .section .note.GNU-stack,"",@progbits [hjl@gnu-skl-2 gcc]$ *** This bug has been marked as a duplicate of bug 90773 ***