Questionable code in gcov-io.c

Nathan Sidwell nathan@acm.org
Wed Oct 12 12:15:00 GMT 2016


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.

nathan



More information about the Gcc-patches mailing list