<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/90457>90457</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Missed optimization for dead store of 'v1': v1=v2; result=arr[0]; v1=1;
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ZY546
      </td>
    </tr>
</table>

<pre>
    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
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVdFuqzgQ_ZrhZdQIDxDggYemNKuVdtWqqrS6-1I52CS-Ipi1TW7ar19hEpIm2VZbVUGM58ycM8x4uLVq3UpZQLKApAx47zbaFH__SOJ5sNLivTBS9JUUWGkhIbqHsITwfuNcZ4c3WgIt11qsdONm2qyBlh9Ay1X2-rzJ9z_b0R3m4fhfdd1okXsnTYs-ucBqww3uGESL8fSTmSBa4Gjv28OJ3Wjj0EjbN25Cjb87rQTWfVsBZRf-3BiEZEEhJCVQjpAekIiIO4YQlWO6k3VM4U8OaA-eGJ0hT_QhLS90nxN8aHi7xrunaKrm5NY0u-1oErJWrURh9VujK96glwVxeFMZ0D1QDpR1zmCrK9653khsdd8KWaORXOi2eUeghBszSPdB3_q25Vsp3rgQ5lQN2TrzPpFDdFw1WPHmRGLgOROr9WzHm14CZVvpuOCO40DgmOUBJzMQo-jSUv7-uO-MtFbpFijzCvJjUqAk9GVtNBeosgHsg8fhjoYX3qh1i-zob502ElXmgefO7IYzUMLOgrP5BJiojwi6CM_mHnsW_9CD_4nIkH3HxkjnK_tN8xxfuT30yFetEN0jUPRdw0wtPPxt9e5jj4iS7weSq3cnR9rJwqgOgRbDcCTlFco_TeVR__zSRlzBGMThb0-vzw8vj3-cIhyhnzJVez-cQ5G-pPcpj1DXUW8ROXysQ4L9bSW36Ry_lpHui9l-3Heycpe35f_9dF8K_-vppcTn15cr4RcyFj9eH73fjo0VuBBy4T6FPdboDDJV6lp8IIpI5FHOA1mwlMVRHlKaB5sirfOoZjKsZZilaVzPK1ZRIkLiYs4yEoEqKKQ4jClnLGJsPmMsrxJes5DHq5yzDOJQbrlqZv620WYdKGt7WeRhnKRBw1eysX5tEbXyF_pDoKFDA1MMmLtVv7bDbaWss6coTrlGFn8qa6VA3Tm1VR_cKd1irQ0KycVhdnWNQOkwsukwT8N-KsdtdFw85XBZnFaC9xjWQNCbprjYkcpt-tWs0lugpb_nx8ddZ_RPWTmgpVdggZZe4b8BAAD__5TfJ04">