<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/163144>163144</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LVI] Pointer equivalence implied without considering pointer provenance
</td>
</tr>
<tr>
<th>Labels</th>
<td>
miscompilation
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
antoniofrighetto
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
antoniofrighetto
</td>
</tr>
</table>
<pre>
Similarly to what has already been fixed in GVN, and currently tracked in SCCP (https://github.com/llvm/llvm-project/issues/159565), when assuming a pointer equality, CVP happens to propagate the known constant (or the pointer itself on the inverse condition), without however considering the pointer provenance, which may be different (or non-existent).
```llvm
define ptr @src(ptr %p) {
entry:
%cond = icmp eq ptr %p, inttoptr (i64 -1 to ptr)
br i1 %cond, label %join, label %bb.1
bb.1:
br label %join
join:
%phi = phi ptr [ %p, %entry ], [ inttoptr (i64 -1 to ptr), %bb.1 ]
ret ptr %phi
}
define ptr @tgt(ptr %p) {
%cond = icmp eq ptr %p, inttoptr (i64 -1 to ptr)
br i1 %cond, label %join, label %bb.1
bb.1:
br label %join
join:
ret ptr inttoptr (i64 -1 to ptr)
}
```
Alive2: https://alive2.llvm.org/ce/z/GkRymb.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8lN-L4zgMx_8a90VMcZwfbR7y0GnpcnAcwy3Mu5OojXYcO2srne399YedaWdn77h7WFgIxJYs-aMvlnQIdLaIjSgfhVLasrPkTp7OAzI7oZQoDys98-B886N31br-2nymkYz25grs4HXQDIMOoI1H3V-hRbRwom_YA1n49PyHUHvQtodu9h4txzCvu5fF_3m_fwKhtgPzFES-E-oo1PFMPMztunOjUEdjLrffw-TdF-xYqCOFMGMQ6piVdVmVQtXxntcBLegQ5pHsGTRMjiyjB_w6a0N8jWf2z08w6GlCG2IBk3eTPmtG4AHhxbpXC52zgbXlSOZ8ctwyEQc0J3A2Wcle0AeMAT0xOXvjIB7czDC4V7ygTwmpRx-pvs82eXdBq22HCz11A4w6igg9nU4YBXuDsM4-4DcKjJaFqtdC7uJXyeVLKsldjyeyCBN7EIUMvhNqmzaqnISqQWwehdyhZX-NassdRFfEB5EfgLpxAvwK7yF7IMvsFsOWqgIesiQb-1ir3EHrgbJblhhgdIsmGr44sh8MbbvOFu60egNo_Q8h6URaLSciyUAJMP4TS_l4BxSqTAWBKA9pXz7-N_QSExFSSGTwyPeiB4oEm8PC8VFRPvO_KvrzMv4CHe9V_g_LW-23p7Xk2Rm6oBL5Dj72qk72dXx_a-fPQh3jYz7-JdTx08uf17Fdr_om7-u81itssk0l8yLfVNVqaNq6lbqssk3etr0-beoyq7HsTlrLrFVdt6JGSVVmMsvlVqmiWm_zqu71ti5UK5VUG1FIHDWZ-_WrNBearMqzolglOcLbqBspdG6cyOilUdOg802aK-18DqKQhgKH91xMbNKg_P35N1Ee4Ol9mtBFG7QdAo2TIezvHf99p_-zy1ezN81PzLqlrEuj_g4AAP__zPHNpA">