Issue |
90457
|
Summary |
Missed optimization for dead store of 'v1': v1=v2; result=arr[0]; v1=1;
|
Labels |
new issue
|
Assignees |
|
Reporter |
ZY546
|
reduced code:
https://godbolt.org/z/b8TPh9xjn
```cpp
extern signed char v1;
signed char v2;
unsigned short result;
void func(unsigned short arr [20]) {
v1 = v2;
result = arr [0];
v1 = 1;
}
```
Clang -O3:
```llvm
define dso_local void @func(unsigned short*)(ptr nocapture noundef readonly %arr) local_unnamed_addr {
entry:
tail call void @llvm.dbg.value(metadata ptr %arr, metadata !23, metadata !DIExpression())
%0 = load i8, ptr @v2, align 1
store i8 %0, ptr @v1, align 1
%1 = load i16, ptr %arr, align 2
store i16 %1, ptr @result, align 2
store i8 1, ptr @v1, align 1
ret void
}
```
```asm
func(unsigned short*): # @func(unsigned short*)
movzx eax, byte ptr [rip + v2]
mov rcx, qword ptr [rip + v1@GOTPCREL]
mov byte ptr [rcx], al
movzx eax, word ptr [rdi]
mov word ptr [rip + result], ax
mov byte ptr [rcx], 1
ret
```
Expected code:
```asm
func(unsigned short*):
movzx eax, WORD PTR [rdi]
mov BYTE PTR v1[rip], 1
mov WORD PTR result[rip], ax
ret
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs