<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56801>56801</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang static analyzer: dividezero checker warning on unreachable line
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          kangeroo-gong
      </td>
    </tr>
</table>

<pre>
    For the following program:
```c++
#include "map"

using namespace std;
class Qes {
private:
    map<int, int> map;
    int num;
public:
    void func(int a);
};

void Qes::func(int a) {
    if (a==num)
        return;
    auto iter = map.find(a); // no warning without this line
    if (a!=num)
        return;
    int c = 10/(a-num); // this line warn Division by zero
}
```
There are two if stmt make program can't reach  `int c = 10/(a-num)` ,but the checker still warn..

(Tested with **LLVM 14.0.6.**)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNU02P2yAQ_TX4gmJh8OfBh-ymOW0PlVa9YzOx6RKIDE60_fUdSDbptlJVi2BnYN689xgGp977vVtomIEenDHuou1ET4ubFnkkYkvYjrAtqdl1jIQ_xXGNcqHtaFYFlHB-lCecbytpXn3EsvII_iRHoD4oIm65o5He02_gKWluodOizzLAvSjFJ4KKZ20D4c80vsSXa-zpsQfD1K7He-y0DkaPn2DOTit6WC3Sb-N2SXh330-a3eM7zWk7cosYYvtH3oNwKn5A7a0kAjF2kQUC3xfjs0BYF_uJsFyDozrAQjEnyskP2qoEk2gh4h4HtY5e5GKjiRcdZrcGPCbtqdEW_mbAi_9nELWMqXrBUrFWbm6pj_L3WokF3emz9tpZOrzTn7C4h3mfW-T693WGBajEX7i4yNGHY0Ctb_DRXHSUlvAmID85zpRi6j9o1QxpPQ_JAqDjDOMb-ueDNibRy_PfDxAzX8EHUMk4zMTI9uXl-1dalDnL6_waQeAM-qKuOtYVrK0z1QvViU5mQQcDPTYpeu-DDHqk0krzjsKxI6hCLxREF-5UPk4KDVptkiQHA8m_bF1MP4dwSg2VzJ2Q1jrko0Nxe2POH68NmvMDRmz3vfZ-xRbk-6puWZHNfS1KaAbJVNnJrmg7KTkoXkGjDqKtmy4zcgDje1LhFeUWLjRBxEtZ7TLdc8Y5azgqFS2r87IUAsaiqQSryqpRpGRwlNrkkUfulilb-kRpWCePi0b74B-LeH31ZAFSOcTHpp7d0r-hY2iL20zOTlki0CcBvwAERkod">