thradams wrote:
Suggestion:
Consider this code:
```c
void f2(int i) {}
void f(int k) {
int i;
_Defer f2(i);
if (k > 1) return; //defer executed
if (k > 2) return; //defer executed
i = 1;
} //defer executed
```
The warning using -Wall is: (https://godbolt.org/z/3PKxMKMKM)
```
<source>:4:15: warning: variable 'i' is uninitialized when used here
[-Wuninitialized]
4 | _Defer f2(i);
| ^
<source>:3:10: note: initialize the variable 'i' to silence this warning
3 | int i;
| ^
| = 0
1 warning generated.
ASM generation compiler returned: 0
<source>:4:15: warning: variable 'i' is uninitialized when used here
[-Wuninitialized]
4 | _Defer f2(i);
| ^
<source>:3:10: note: initialize the variable 'i' to silence this warning
3 | int i;
| ^
| = 0
1 warning generated.
Execution build compiler returned: 0
Program returned: 0
```
My suggestion is to add a note identifying the defer execution that triggered
the warning.(The return line)
In complicated code with multiple defer executions, this may be hard to find.
https://github.com/llvm/llvm-project/pull/162848
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits