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

Reply via email to