[Bug tree-optimization/81809] New: missing -Wuninitialized due to alias analysis limitation
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Aug 10 19:46:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81809
Bug ID: 81809
Summary: missing -Wuninitialized due to alias analysis
limitation
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
This almost certainly a side-effect of the limitations of the flow-insensitive
alias analysis pointed out in bug 23384 but I wanted to make a record of the
impact the limitation has beyond optimization.
Both functions below read the uninitialized variable b. The uninitialized read
is diagnosed in g() but not in h() because the address of the variable is
considered to have escaped even though it doesn't happen until after it has
been read.
$ cat a.c && gcc -O2 -S -Wall -Wextra -Wpedantic a.c
void f (const void*);
int g (void)
{
int a, b;
f (&a);
int i = b; // -Wuninitialized (good)
return i;
}
int h (void)
{
int a, b;
f (&a);
int i = b; // missing -Wuninitialized (bug)
f (&b); // &b escapes here
return i;
}
a.c: In function ‘g’:
a.c:8:7: warning: ‘b’ is used uninitialized in this function [-Wuninitialized]
int i = b; // -Wuninitialized (good)
^
More information about the Gcc-bugs
mailing list