Issue |
111126
|
Summary |
Regression from clang 16: missed vectorization in simple array initialization
|
Labels |
clang
|
Assignees |
|
Reporter |
ZY546
|
reduced code:
https://godbolt.org/z/3MYzE1v7M
```cpp
long arr [20];
void f() {
for (int i = 0; i < 20; i += 1)
{
arr [i] = 1;
}
}
```
clang -O3:
```asm
f():
mov qword ptr [rip + arr], 1
mov qword ptr [rip + arr+8], 1
mov qword ptr [rip + arr+16], 1
mov qword ptr [rip + arr+24], 1
mov qword ptr [rip + arr+32], 1
mov qword ptr [rip + arr+40], 1
mov qword ptr [rip + arr+48], 1
mov qword ptr [rip + arr+56], 1
mov qword ptr [rip + arr+64], 1
mov qword ptr [rip + arr+72], 1
mov qword ptr [rip + arr+80], 1
mov qword ptr [rip + arr+88], 1
mov qword ptr [rip + arr+96], 1
mov qword ptr [rip + arr+104], 1
mov qword ptr [rip + arr+112], 1
mov qword ptr [rip + arr+120], 1
mov qword ptr [rip + arr+128], 1
mov qword ptr [rip + arr+136], 1
mov qword ptr [rip + arr+144], 1
mov qword ptr [rip + arr+152], 1
ret
```
expected code (clang 15 or gcc):
```asm
f():
movaps xmm0, xmmword ptr [rip + .LCPI0_0]
movaps xmmword ptr [rip + arr], xmm0
movaps xmmword ptr [rip + arr+16], xmm0
movaps xmmword ptr [rip + arr+32], xmm0
movaps xmmword ptr [rip + arr+48], xmm0
movaps xmmword ptr [rip + arr+64], xmm0
movaps xmmword ptr [rip + arr+80], xmm0
movaps xmmword ptr [rip + arr+96], xmm0
movaps xmmword ptr [rip + arr+112], xmm0
movaps xmmword ptr [rip + arr+128], xmm0
movaps xmmword ptr [rip + arr+144], xmm0
ret
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs