https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68336
Bug ID: 68336
Summary: False positive Wreturn-type warning
Product: gcc
Version: 5.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: yyc1992 at gmail dot com
Target Milestone: ---
The following code gives a warning about control flow reaching the end of
function without returning a value even though the function will always reach
the `return 1;` statement and won't reach the end of the function.
```
int f()
{
for (int i = 1;--i >= 0;) {
return 1;
}
}
```
Given no warning about this is given if the loop condition is replaced with `1`
I hope it is also possible for gcc to figure out that the loop is executed as
least once and silence the warning.
This (admittedly stupid....) code pattern arise from macro expansion to setup a
single time local context.