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

    <tr>
        <th>Summary</th>
        <td>
            Missed optimization : fail to 
        </td>
    </tr>

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

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

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

<pre>
    Alive2 proof: alive2 link
Missed example: godbolt link

### Motivating example 

```llvm
define i8 @src(ptr %p, ptr %p1, i1 %c) #0 {
entry:
  %add.ptr = getelementptr inbounds i8, ptr %p1, i64 1
  %add.ptr1 = getelementptr inbounds i8, ptr %p1, i64 4
  store ptr %add.ptr, ptr %p, align 8
  store i8 0, ptr %p1, align 1
  %cond = select i1 %c, ptr %add.ptr, ptr %add.ptr1
  %add.ptr2 = getelementptr inbounds i8, ptr %cond, i64 1
  store i8 1, ptr %add.ptr2, align 1
  %0 = load i8, ptr %p1, align 1
  ret i8 %0
}
```

The loaded value of `%p1` should be 0, but the store to `%add.ptr2` clobbers and resists optimization.

```llvm
define i8 @tgt(ptr %p, ptr %p1, i1 %c) #1 {
  %add.ptr = getelementptr inbounds i8, ptr %p1, i64 1
  %add.ptr1 = getelementptr inbounds i8, ptr %p1, i64 4
 store ptr %add.ptr, ptr %p, align 8
  store i8 0, ptr %p1, align 1
 %cond = select i1 %c, ptr %add.ptr, ptr %add.ptr1
  %add.ptr2 = getelementptr inbounds i8, ptr %cond, i64 1
  store i8 1, ptr %add.ptr2, align 1
  ret i8 0
}
```

C version: https://godbolt.org/z/n35z81b87

### Real-world motivation

This snippet of IR is derived from [postgres/src/backend/utils/adt/network.c](https://github.com/postgres/postgres/blob/bea97cd02ebb347ab469b78673c2b33a72109669/src/backend/utils/adt/network.c#L1374) (after O3 pipeline).
The example above is a reduced version. If you're interested in the original suboptimal IR and optimal IR, see also:https://godbolt.org/z/Tha53z7hc

**Let me know if you can confirm that it's an optimization opportunity, thanks.**
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVl2P4yYU_TXk5WojDP588MN8KNJKu6q02oe-grmO6RCwAGc68-srbGeTTKbtbKVKrWTF2L6ce-7lcIIIQe8tYkuKe1I8bsQUB-fbXx-Gl4106qW9M_qIDEbvXE_4HYjl2Wj7ROgjoXdfdQioAH8Xh9FgCtk7JZ2JFzHrL-PLBV9d1EcRtd2f5sFVYEmXy5jjYXmlsNcWQddAchp8R1g9Rg-EFSNhD3AaZ-lBZ2ncEdYAYZwCqe4XELTRvxC-ZoEUJZTazpP5I-wxosED2pjeaCvdZFUAXd9mKHPIblGyfwCTn2BCdB5P31fAyxlpLIzeW6ivp-ga6A30EnnJsXNWzfwCGuziuUsPf570VNdtqezDpaa8Nz37wTy7zcbe50_njMYJ9V4r38R7jLNWWEFXSVWPb7R1KbjvA87IqOAozITgekghM3pJIQxuMgokLp2WU4Q44FpFdGvsD_4lhc44KdEHEFaBx6BDDODGqA_6VUTt7PZnBB_38eOCz86C_29J_N9U-P9d4KtgP6TWBziiD9rZZLZDjGNInsZ2hO1W6906vyds90rYzvLitc5kXb3vxN9QmE_PzhsFh9WUnb3eGjpAsHocMaZt8fkb6AAKvT6igt67A5DifnQh7j0GwnazOe-k6J4w9WU3RW3Se6FiooPx2fmnbUeKR8LqN-x1HCa57dyBsN0F5MVQGifTDUVTdYoylJLnlZB52ciqLiveMcm5qFhGm7JsfoIP418yXuXLJqpFH9HDLxxGPaLRFglrtmezOP1rCemOmBoiwKOaumQgy9ps4XMPL24irEpCsBE9hogKtJ29w3m911YYCJOcfUGY1NtkF-fHJJSACMIER_jd363190EU_LUauuu1TtcXjHBAeLLuGfRMDDphoXO21_4AcRARdCSsSo51ZVTgxtH5OFkdXxKfOAj7FLYL7Ea1XDW8ERtssyrjrOBVUW2Gtmk6xuq-7FmZ5RWjDFXR9bSWWPWKVd1Gt4yynOZZSau8yaot53kjaVFj2RcNo5LkFA9Cm23yxFTkRocwYVvXdUE3Rkg0YT61MGbxGeaPhLF0iPFtmvNJTvtAcmqS955Roo4G2_XUclVo2k690CY5-mbypv0Ldc5Gvdw-jd79hl1S00wiiWsm-UcAAAD__xcsyuU">