Issue 172338
Summary Flow analysis and _Defer
Labels new issue
Assignees
Reporter thradams
    Consider:

```c
void f2(int i) {}
void f(int k) {
    int i;
    _Defer f2(i);

    if (k > 1) return;
    
 i = 1;

    if (k > 2) return;

    i = 2;
}
int main() {}
```
We have two warnings:

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

https://godbolt.org/z/3sz7cT8Wv

But the uninitialized warning should be only at `if (k > 1) return;`.

Also, any warning captured by flow analysis should print the line were defer is executed.




_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to