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

    <tr>
        <th>Summary</th>
        <td>
            [ValueTracking] `ptrdiff(X, Y) != 0` implies `X != Y`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            missed-optimization,
            llvm:analysis
      </td>
    </tr>

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

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

<pre>
    Alive2: https://alive2.llvm.org/ce/z/NdrNbE
```
target datalayout = "p:8:8:8"

define i1 @src(ptr %p0, ptr %p1, i8 range(i8 1, 0) %nonzero) {
entry:
  %i0 = ptrtoint ptr %p0 to i8
  %i1 = ptrtoint ptr %p1 to i8
 %diff = sub i8 %i0, %i1
  %cond = icmp eq i8 %diff, %nonzero
  call void @llvm.assume(i1 %cond)
  %cmp = icmp eq ptr %p0, %p1
  ret i1 %cmp
}

define i1 @tgt(ptr %p0, ptr %p1, i8 range(i8 1, 0) %nonzero) {
 ret i1 false
}

```
See also https://github.com/dtcxzyw/llvm-tools/issues/35.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysU8FupDgQ_ZriYqVlFw1tDhxIejnmsqtVcjTY0N41mLFNz3R__cgO3UlG0ZxGAgmbV6-qXr0S3utxVqqG4hEQZeh_XC_fARGKYybWcLKu3i6zzspL3Rh9Vgh5Q04hLB7yBrAFbEW63xlznnbWjYBtrwDbK2D7LN1z9xfQBkq6PbQJwo0qECmCMOJi10AgPxJAXCBv-P1FjHG0kWrQsyKaEdhT73pAvgRHAIuFAj6R24HFg-bEiXlUgFxzkq4oYBUBs52vytl0OjwCbdQc3CV2QRsSAZqmQpbggtVzuBNTEizR_A5jX8PYOwywkHoYEs6vXawq8cdyEsONq7ezTCjdTwtR3zZkDN6wt6pjQC-MIWerZVQiyS28X6fULLvRAVZ39mn5RP5JtjfJItKpQLb4aYmaH45fKB_G8MeUv6UchPHqY8aPNvlbKSKMt7-4bdThtHa73k6A7d20bZTjIVhrPGCrvV9V_MiLHdAmk3Uuq7wSmarZIUdelRXbZ6daVIpz5MMgxSFneTGUsi8qKSrKVcm6PtM1UtwzhhUrWcHy3VB2pcpLjtXQ5Ye9gj1Vk9Dm7v4s5a4Z44yWmRGdMn7bsEl7r-SDXYKe9FUEbedocnwCxBgOeSNmYS5e-20LXZ3a6tbRx4lrH_x7oqCDScv7rzCr-seJ_n89j1AcCZR0Ce7NRPwlTuL1bRIsuiHKS_S0GK18hL7cfrxCSbPVmfo3gqc6N7UXZ_9Tffio99b2ucafAQAA__8r-0Tt">