https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85721
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Component|c++ |middle-end --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- At -O3, it is vectorized with an alias check at the beginning. .L4: movdqu xmm0, XMMWORD PTR [rsi+rax] movups XMMWORD PTR [rdi+rax], xmm0 add rax, 16 cmp rax, rcx jne .L4 That is a vectorized part of the loop lea rax, [rsi+16] cmp rdi, rax lea rax, [rdi+16] setnb cl cmp rsi, rax setnb al or cl, al je .L7 lea rax, [rdx-1] cmp rax, 14 jbe .L7 That is an alias check, though it looks like it could be improved.