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

    <tr>
        <th>Summary</th>
        <td>
            Possibly false positive "non-void function does not return a value in all control paths" warning 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          sergey-senozhatsky
      </td>
    </tr>
</table>

<pre>
    The following sample code
```
long offset(long v)
{
        if (!v)
                return 0;
        if (v > 0)
                return 1;
        if (v < 0)
                return -1;
}
```
produces
```
warning: non-void function does not return a value in all control paths [-Wreturn-type]
```

So does 
```
long offset(long v)
{
        if (v == 0)
                return 0;
        if (v > 0)
                return 1;
        if (v < 0)
                return -1;
}
```

Ditto with -O2, -Os.

clang --version
Debian clang version 14.0.6-2
Target: x86_64-pc-linux-gnu
Thread model: posix

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMk0-PmzwQxj_NcBk5ss2fwIHD7ubNdV-pK_VYOWYAt46NbMNu-umrBKququypPVRChtHzG5hnhlExmsERtVA-QnnI1JxGH9pIYaALi-T891Gl-O2SnXx3aV9Gwt5b61-NGzCq82QJte8I-AH4A1R8u26h9W5A3_eREsj6Fi0gm43dP24PvDE9gqxBincyb4A3gdIcHHLIf4cXhPw_5Pd5cZ9_-ohn7xL2h7tepuC7WVO8K76q4IwbIH9A5x1bvOmwn51OxjvsPEV0PuH2MYWLsjOhcaisRe1dCt7ipNIYEcpH9nkFWbpMBOX9ctbzk1_f_je6f23QAfLDRz36B2awngeTksdXk0ZkzxLkE7LnuHtPaKvcgIwtFKLxbkujk1EOV21TUBQ7vquYXJEXFQZK1ym-1dWXqmCTZta4-Y0Nbt6QMZDq8Ow7sldw8tG8rVLWtXnX5I3KqBXVnpd1lYsmG9u-q6syF7nWteblnoTidS57TqKpVMF1ZlrJpRSSN0IUpSh3vNZK1arpRF00XAkoOJ2VsTtrl_POhyEzMc7Ulk0h6syqE9n4c4NDe4XYaR4iFNyamOKvtGSSpfZ_H6M52Qv2yka6eUhmIQQp_-z3BSlx2wXM5mDbMaUpQv4A8gjyOJg0zqed9meQx2tN241NwX8lnUAeb74iyOPN2o8AAAD__2SoUvc">