[Bug middle-end/81897] [6/7 Regression] spurious -Wmaybe-uninitialized warning
arnd at linaro dot org
gcc-bugzilla@gcc.gnu.org
Mon Jan 8 09:22:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81897
--- Comment #16 from Arnd Bergmann <arnd at linaro dot org> ---
Created attachment 43056
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43056&action=edit
linux/net/ipv6/route.c, preprocessed and compressed
To test the patch, I reverted the workaround that was added to the kernel when
I originally reported this. Unfortunately the warning is still there, only the
reduced version is fixed. I attached the preprocessed source now, test with
$ x86_64-linux-gcc-8.0.0 -fno-strict-aliasing -Wall -O2 -Wno-pointer-sign -c
route-1.i
/git/arm-soc/net/ipv6/route.c: In function 'inet6_rtm_getroute':
/git/arm-soc/net/ipv6/route.c:4350:9: warning: 'dst' may be used uninitialized
in this function [-Wmaybe-uninitialized]
goto errout;
^~~~~~
}
Reducing this with the latest gcc-8.0.0 snapshot gave me
enum { true } fn1();
int inet6_rtm_getroute_iif, inet6_rtm_getroute_rt, inet6_rtm_getroute_rtm_0;
int *inet6_rtm_getroute___trans_tmp_8;
int fn2();
void fn3() {
int *dst;
_Bool fibmatch = inet6_rtm_getroute_rtm_0 & 2;
if (inet6_rtm_getroute_iif) {
if (!fibmatch)
dst = inet6_rtm_getroute___trans_tmp_8;
static _Bool __warned;
fn2() && __warned &&fn1();
__warned = true;
} else if (!fibmatch)
dst = 0;
if (fibmatch)
dst = 0;
inet6_rtm_getroute_rt = *dst;
}
More information about the Gcc-bugs
mailing list