<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/100762>100762</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[analyzer] Handle `[[assume(cond)]]` as `__builtin_assume(cond)`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
good first issue,
clang:static analyzer
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
steakhal
</td>
</tr>
</table>
<pre>
We already handle `__builtin_assume` calls inside the `BuiltinFunctionChecker`.
We should also handle the attribute variant of this, e.g.:
https://compiler-explorer.com/z/oq6nY7eqE
```c++
void clang_analyzer_printState();
extern int arr[10];
void using_assume_attr(int x) {
[[assume(x > 100)]]; // NullStmt with an attribute
//clang_analyzer_printState();
arr[x] = 404; // FIXME: we don't raise this!
}
void using_builtin(int x) {
__builtin_assume(x > 100); // CallExpr
//clang_analyzer_printState();
arr[x] = 404; // caught!
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVE1v4zYQ_TWjyyAGNfo-6BBHEdpDe9nDtieDkiYSuzTpJamss7--0EfidJsCPSxAwLA47w3f4xtK79VomGvIjpA1kZzDZF3tA8svk9RRZ4eX-jOj1I7l8IKTNINmhFycTt2sdFDmJL2fzwy5wF5q7VEZrwbGMK11x62qnU0flDUPE_df2EEuDiAaEPefGf1kZz2g1N6-NljAMgSnujkwPkunpAlonzBMygM9IB_GAyT3G8cUwsUv_6gFant7vijN7o6vF20du0Nvz0Dtd6DWfs3NnwV_fdyAkItt9UDHZa1fn60asNfSjCdppH75zu50ccqET0EGBiqBKkj2Yr4GdgaVCSidg-wYC8iat-13jLNXC-Pq1mkRB1QusCtQhVDsAETE9TKOu69UXhGSR4yFWPpmzUaPm1j8fdb6UzgH_KbChNLcbHvHt_nyPxUtiE3KFbIGIWkwFem7lu2vf_z2CMk9fmMcrAEqAjqpPO-3E-_Si-Y_PNiT87H-fwXrBwNu53iQWj9eL24H_mSVvZzHKXyg5jUz0VAnQ5VUMuI6LoiEKGJB0VQPqayyp7hP87jss1xykidpWfFT2Q3DIItI1SQoFQXlcRaXRIe0y2TXibRkrogrAangs1T6oPXz-WDdGCnvZ65jIYqcIi071n6dWaLR2gGflPMB1yIgAnoAotUJSO59kEH1-GrJsp81kasX7rtuHj2kQisf_K1bUEGvb8IbKGvwl7fZ_yGfvTXDLZq5QOk_fCFulbmIZqfrf87tqMI0d_uwLkfZf-4uzv7FfQBqV4EeqN2NeK7p7wAAAP__-9tvGA">