This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Coping with gcc warning due to limitation of gcc analysis?


On 01/27/2018 01:54 PM, Samuel Thibault wrote:
> Hello,
> 
> We have a warning in sysdeps/mach/hurd/getresgid.c:
> 
> ../sysdeps/mach/hurd/getresgid.c:57:9: warning: 'saved' may be used uninitialized in this function
> 
> Basically the structure of the function is the following:
> 
> int
> __getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid)
> {
>   gid_t saved;
>   ...
> 
>   err = foo ();
>   if (!err)
>     {
>       if (bar)
> 	err = EBAR;
>       else
> 	{
> 	  saved = bat;
> 	}
>     }
> 
>   if (err)
>     return err;
> 
>   *sgid = saved;  /* The warning is triggered here */
>   ...
> }
> 
> i.e. in all the cases where `saved' is not initialized, err is set to
> non-zero, and thus we return before ever using saved.
> 
> What is the glibc-preferred way to deal with this? Of course I could
> just initialize saved to a dumb value like -1 but the reader might
> wonder why unless we put a blunt comment, and a smarter compiler might
> later warn "-1 set in `saved' is never used"...
First, make sure you've filed a bug with a reproducer in GCC :-)  We
work diligently to address these false positives.  It may even be the
case that this is one we've already fixed on the trunk.

Jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]