[Bug c/85872] New: False positive for -Wmaybe-unitialized
jakub.leszczak at nokia dot com
gcc-bugzilla@gcc.gnu.org
Tue May 22 13:49:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85872
Bug ID: 85872
Summary: False positive for -Wmaybe-unitialized
Product: gcc
Version: 8.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: jakub.leszczak at nokia dot com
Target Milestone: ---
Created attachment 44161
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44161&action=edit
File contains informations about the bug and environent (uname, gcc --version,
*.i files etc.)
There is a false positive for maybe-unitialized when using -O1 (but not for
-O0).
Minimal case I got after stripping code:
```
int test1(int *t);
int test(int *t, int e)
{
int i, f = 0;
if (e != 0) {
for(i = 0; t[i] != e; i++);
} else {
f = 1;
}
int j;
if (test1(&j)) return 1;
if (test1(&j)) return 1;
if (test1(&j)) return 1;
if (test1(&j)) return 1;
if (test1(&j)) return 1;
#if TEST
if (test1(&j)) return 1;
#endif
if (!f) {
return t[i];
}
return 0;
}
```
doesn't compile with `$ gcc -Wall -Werror -O1 -DTEST=1 -c bug.c`. But it
compiles when either I turn off optimizations or set TEST=0. For some reason
adding one additional `if (test1(&j)) return 1;` makes a difference.
Tested on arch linux, ubuntu 16.04 and gcc.godbolt.org, on multiple gcc
versions: 5.4.0, 7.3.1, 8.1.0, aarch64-linux-gnu-gcc6.4.1 and
arm-linux-gnueabihf-gcc4.7.3.
More information about the Gcc-bugs
mailing list