Questionable code in gcov-io.c

Marek Polacek polacek@redhat.com
Wed Oct 12 13:43:00 GMT 2016


On Wed, Oct 12, 2016 at 08:14:58AM -0400, Nathan Sidwell wrote:
> On 10/12/16 08:10, Marek Polacek wrote:
> > While implementing a warning I noticed this in gcov-io.c:
> > 
> >  187   else if (mode == 0)
> >  188     {
> >  189       struct stat st;
> >  190
> >  191       if (fstat (fd, &st) < 0)
> >  192         {
> >  193           fclose (gcov_var.file);
> >  194           gcov_var.file = 0;
> >  195           return 0;
> >  196         }
> >  197       if (st.st_size != 0)
> >  198         gcov_var.mode = 1;
> >  199       else
> >  200         gcov_var.mode = mode * 2 + 1;
> >  201     }
> >  202   else
> >  203     gcov_var.mode = mode * 2 + 1;
> > 
> > It seems that lines 198 and 200 do the same thing, at line 200 we know that
> > mode == 0, so we just assign 1.  Should we just remove the condition on line 197?
> 
> ITYM lines 197 -> 203.  I.e. remove the entire if that;s inside the 'mode ==
> 0' branch and make line 203 unconditional.

Yes, sorry for sloppy wording.  I'm testing a patch.

Thanks,

	Marek



More information about the Gcc-patches mailing list