https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92611
Bug ID: 92611 Summary: auto vectorization failed for type promotation Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: crazylht at gmail dot com Target Milestone: --- Target: i386, x86-64 Cat test.c void foo(int *__restrict dst, char *__restrict src) { for(int x = 0; x < 4; x++ ) dst[x] = src[x]; } Clang generate --------------- vpmovsxbd (%rsi), %xmm0 vmovdqu %xmm0, (%rdi) retq --------------- while GCC generate ---------------- movsbl (%rsi), %eax movl %eax, (%rdi) movsbl 1(%rsi), %eax movl %eax, 4(%rdi) movsbl 2(%rsi), %eax movl %eax, 8(%rdi) movsbl 3(%rsi), %eax movl %eax, 12(%rdi) ret --------------- Refer to https://godbolt.org/z/ckmXm_