https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81897
--- Comment #18 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- (In reply to Arnd Bergmann from comment #16) > Created attachment 43056 [details] > 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; > } For both the reduced and full testcase in comment #16, I see this warning present in GCC 5, 6, 7, and 8 (mainline). So this does not look like a regression in the recent past. I also tested the reduced case in this comment for gcc4.5 (at least at r150051), and the warning is present there as well. I didn't test the full testcase, as they were other warnings that muddled the waters in such ancient version. If you feel this reduced case is still problematic, I think we should open a new PR, and mark it as a regression if you find a GCC far enough back that does not exhibit the warning. If you can't find a GCC for which this has regressed, then at least mark it as an enhancement request.