<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">