https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81897

--- Comment #20 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
(In reply to Aldy Hernandez from comment #18)
> (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.

FWIW, the reduced testcase in comment 16 is fixed by Andrew and mine's upcoming
work for the next release cycle (GCC 9).  Sorry :(.  So if you open a PR, feel
free to CC or assign it to me.  (not so for the test in comment 17).

Reply via email to