<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60836>60836</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[analyzer] Explore the design space of the EQClass::simplify implementation
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
steakhal
</td>
</tr>
</table>
<pre>
The range-based solver in the Clang Static Analyzer is quite complicated.
We also track equality and disequality classes making things more complicated.
We have unintuitive invariants, and it's difficult to reason about the possible states of the analyzer's solver.
In the past, we had to remove a seemingly perfectly valid assertion at one place because of this in afcf70aa6de77a0e99f6cb2d3e3824049203d6e2 aka. [D138037](https://reviews.llvm.org/D138037).
Read the details there to learn more about the internals of the range-based solver.
This ticket is about exploring how to get back that assertion and offer more tight invariants.
We should be really careful about the runtime and memory footprint implications of the explored solutions.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0VM2SozYQfhpx6VqXEDa2DxxmZ9ZVOSbZqpwb1EDHQmKlxhPn6VMCxzNbqVz4a-j-_hpMiQdP1KjDV3V4K3CRMcQmCeF1RFe0wd6b7yNBRD_QlxYTWUjB3SgCe5CR4NWhH-B3QeEOXjy6-9-5mODHwkLQhWl23KGQ3Sn9pvTLHwToUgCJ2F2BfizoWO6A3oLl9LzvHKZECSa8sh9ARvZDginE_-k54o1g8exlYeEbAfsbRkYvSZnXtT2LMscElvueu8UJSIBImIIHbMMiK585pMStI0iCQglCvz7GB7O1w6bAY_Z2_GVTY8Ykedx7BmS3AVO4ESAkoon94O4wU-ypE3eHGzq2kIlG4QxDIHiC2WFH0FKHS6INAacsOPZdf9SItaXjETWdz33dtcZWVJ3MXu_PRle2JgN4xR2ow9e3sjrp6qgOb8qcRpE5qepFmYsyl0g3pve0c-427UIclLn8-7Y5P7j9RpnESGBJkF3K15EyLUcY_WbHh3bshaJH91Ttv7H5SbTvmZZwdyXJidka0V-zCzF7Pob3PGoggTZnRUaUz2J5C6HvKW4whIdRPrn-EY00hsVZaCm77dwdOozUL-4T8rh44YnWnhNNId6hD0HmyF6AH3Hj4J_MNpQbrWWt7ArbVPZcnbGgpqyPdV2VtdbF2Bz1vtR7LLsTUa_PXd2aw_60r8q9LWtt-4Ibo02lTXksS6213nXWtFQR5SZUH05qr2lCdk-zCk5poabWp6ouHLbk0rrDxnh6h7WojMkrHZv8zZd2GZLaa8dJPiwvhMWty_-M9-ENvm3UHr7nHwSkOQfyQf3br695N3OQqpe0itPfV5FoIi-rTsUSXfNz3gaWcWl3XZiUuWQEj9OXOYY_qRNlLivupMxl5fVPAAAA___TIpK-">