Issue 89912
Summary Missed optimization: Redundant array assignment
Labels new issue
Assignees
Reporter ZY546
    The following reduced code makes the same assignment to array `a` twice, the second time being redundant.

https://godbolt.org/z/8Kods3soK

```cpp
int a[1024];
int b[1024];

void func()
{
    for (int i = 0; i < 1024; i+=1) {
        a[i] = b[i] * 2;
    }

    for (int i = 0; i < 1024; i+=1) {
        a[i] = b[i] * 2;
 }
}
```

Clang:
```asm
func: # @func
        xor     edx, edx
        lea     rax, [rip + b]
 lea     rcx, [rip + a]
.LBB0_1:                                # =>This Inner Loop Header: Depth=1
        movdqa  xmm0, xmmword ptr [rax + 4*rdx]
        movdqa  xmm1, xmmword ptr [rax + 4*rdx + 16]
 movdqa  xmm2, xmmword ptr [rax + 4*rdx + 32]
        movdqa  xmm3, xmmword ptr [rax + 4*rdx + 48]
        paddd   xmm0, xmm0
        paddd   xmm1, xmm1
        movdqa  xmmword ptr [rcx + 4*rdx], xmm0
        movdqa xmmword ptr [rcx + 4*rdx + 16], xmm1
        paddd   xmm2, xmm2
 paddd   xmm3, xmm3
        movdqa  xmmword ptr [rcx + 4*rdx + 32], xmm2
        movdqa  xmmword ptr [rcx + 4*rdx + 48], xmm3
        add rdx, 16
        cmp     rdx, 1024
        jne     .LBB0_1
 xor     edx, edx
.LBB0_3:                                # =>This Inner Loop Header: Depth=1
        movdqa  xmm0, xmmword ptr [rax + 4*rdx]
 movdqa  xmm1, xmmword ptr [rax + 4*rdx + 16]
        movdqa  xmm2, xmmword ptr [rax + 4*rdx + 32]
        movdqa  xmm3, xmmword ptr [rax + 4*rdx + 48]
        paddd   xmm0, xmm0
        paddd   xmm1, xmm1
 movdqa  xmmword ptr [rcx + 4*rdx], xmm0
        movdqa  xmmword ptr [rcx + 4*rdx + 16], xmm1
        paddd   xmm2, xmm2
        paddd xmm3, xmm3
        movdqa  xmmword ptr [rcx + 4*rdx + 32], xmm2
 movdqa  xmmword ptr [rcx + 4*rdx + 48], xmm3
        add     rdx, 16
 cmp     rdx, 1024
        jne     .LBB0_3
        ret
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to