|Summary:||Missing 'variable-is-used-uninitialized' warning|
|Product:||gcc||Reporter:||Dima Kogan <gccbugs>|
|Component:||middle-end||Assignee:||Not yet assigned to anyone <unassigned>|
|Build:||Known to work:|
|Known to fail:||Last reconfirmed:|
|Bug Depends on:|
Description Dima Kogan 2017-05-19 07:08:17 UTC
Created attachment 41387 [details] test case Hi. I'm using gcc 7.1.0 from Debian/experimental (Debian package gcc-7 version 7.1.0-5). I ran into a case where an uninitialized variable could be returned from a function without triggering a warning. With the attached minimized source tst.c the following does not yield a warning: gcc-7 -DCALL -DTEST2 -Wall -Wextra -o /dev/null -c tst.c Here I initialize some parts of the S structure (s.x), but not others (s.y). And I return the uninitialized piece: s.y. The extra f() call at the beginning of g() triggers the bug: taking that call out with gcc-7 -DTEST2 -Wall -Wextra -o /dev/null -c tst.c produces the warning as it should. Furthermore, initializing s.x in a slightly different way makes the bug go away as well: this produces the warning also: gcc-7 -DCALL -Wall -Wextra -o /dev/null -c tst.c Finally, it looks like gcc-6 had a similar issue where the extra call to f() makes the warning go away, but it was fixed in gcc-7: the following misses the warning: gcc-6 -DCALL -DTEST2 -Wall -Wextra -o /dev/null -c tst.c Maybe the fix to THIS bug would be similar. Thanks!
Comment 1 Andrew Pinski 2017-05-20 06:28:59 UTC
There might be another bug already for this one.
Comment 2 Dima Kogan 2019-09-22 07:15:21 UTC
I just tried this with Debian builds of gcc8 and gcc9: 8.3.0-19 and 9.2.1-8. This bug still exists in both.