<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">