<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63574>63574</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
llvm::isPotentiallyReachable() returned an incorrect result
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
tr4v3ler
</td>
</tr>
</table>
<pre>
LLVM version: 14.0.0
target source code:
```c
if (cd->compat_flag == true) {
if (copy_from_user(&data_compat, argp, // if.then.i189
sizeof(data_compat))) {
return -EFAULT;
}
} else {
if (copy_from_user(&data, argp, // if.then.i
sizeof(data))) {
return -EFAULT;
}
}
```
my code:
```cpp
for (auto bb: bbs) {
dbgs() << "[+] bb: " << bb->getName() << '\n';
if (isPotentiallyReachable(bb, current_bb, nullptr, this->dom_tree, this->loopinfo)) {
dbgs() << current_bb->getName() << " is reachable from " << bb->getName() << '\n';
return false;
}
}
dbgs() << "[+] " << current_bb->getName() << " is not reachable from all\n";
return true;
```
my log:
```shell
[+] current_bb: if.then.i
[+] bb: if.then.i189
[+] if.then.i is reachable from if.then.i189
```
I checked CFG and sure that if.then.i is not reachable from if.then.i189 but llvm::isPotentiallyReachable() returned an incorrect result:
![image](https://github.com/llvm/llvm-project/assets/59732577/77d3dfd8-67e7-4932-81e1-6881a47dc34c)
Did I use it incorrectly? Is there a problem with the implementation of the function itself? Is there any other function that can accomplish this?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVV1vrDYQ_TXmZbQrsPl84CHZvVSR0qqq2r6ujBnArcHINrna_vrKsMl-Jbmt7o1QwDOemTNzjr3cWtmNiCVJHkmyD_jsem1KZ-IXptAEtW6O5fPznz_DCxor9UjYA0TxNtyGJNyT8GH977jp0IHVsxEIQjdI2MlF0nB9xLqWLRCai2ZD2Behh4m7Q6t4B4TtCduDMzMSWgDJHtf9AACnGD0dD63Rw2G2aAjNCU0b7vhhTUPoDrjpJv8GQitCK5Dt1vU4bmWUF6d0Vv6DuiU0vwot1ue6rP8z6GYzwuZL9fDH8--EXbhJtj-1mO0BlcWL6M8Rfwr1uv4V3O_HecPJJYfD8SPipmm1tNr4rvjsNNS1V0Jd2zs0Td3ZpdUCCNsRtgNCqZcX9Qo7BRJKX7117aXQofuFD3gbmJFkN_oXu5ODtL9qh6OTXKnjb8hFz2vlE9S1n6uYjcHRHdbVOCs1OeM_XS-tr9jo4eAM4qVNaT3JsdUfTfm-t3OZT7qgIC2YV4jgFfF9E7hgvOXK4jf4_gYlF1D-ezujdrctcaVWsPQNzwnkcqpfbR-pT-nuXny2R6VOtjfAF9yyh9uTcyu1-zvgvOPN9w5B78S9B_wJRI_ib2xgV_0EfGzAzgbB9dxdp39nYJcloJ4dKPUy-Bmwhw_V7ZlYp4oN8BHkKLQxKHxyOyt3HiGNSPIoB94hSfaE5r1zk_Xu5cLppOvneiv0QGi11F1fm8nov1A4QituLTpLaJUUGaNJlhFaZVnDmrbJN2mG2SYuGN3kEUabNM8jHmeNYLHwp-diQnvZwBPMFkG6M1x1JKyCJwuuR4PAYTK6VjjAV-l6bwQ5TAoHHB13Uo-g28XazqNY1tJZVO11kvEI2n-edy08CD4CF_6uV9L2y2knrAqakjUFK3iAZZTmWRGnSRQHfSnqNG3jhMY5FzSqmyLKsojmSVZgRItIBLKkIWVhSvMoDKMk3sZJliUsETWPEXPWkDjEgUu19RPdatMF0toZy5QlWRwoXqOyy08upSN-hcW5HMl9YMqFhXruLIlDJa2z5yxOOoXlD1BJMBtV_m9BLDi9IJY-_g0AAP__BfBgBw">