While trying to rerun the gcov example supplied in "man gcov" it was noticed
that the branch values reported are incorrect. The contents in tmp.c.gcov
appears to be correct.
gcc (Ubuntu 4.4.1-4ubuntu8) 4.4.1
#include
int main (void)
{
int i, total;
total = 0;
for (i = 0; i < 10; i++)
total += i;
if (total != 45)
printf ("Failure\n");
else
printf ("Success\n");
return 0;
}
fro...@frodak-laptop:~/gcov$ gcov -b tmp.c
File 'tmp.c'
Lines executed:87.50% of 8
Branches executed:100.00% of 4
Taken at least once:75.00% of 4
Calls executed:50.00% of 2
tmp.c:creating 'tmp.c.gcov'
fro...@frodak-laptop:~/gcov$ cat tmp.c.gcov
-:0:Source:tmp.c
-:0:Graph:tmp.gcno
-:0:Data:tmp.gcda
-:0:Runs:1
-:0:Programs:1
-:1:#include
-:2:
function main called 1 returned 100% blocks executed 86%
1:3:int main (void)
-:4:{
-:5: int i, total;
-:6:
1:7: total = 0;
-:8:
11:9: for (i = 0; i < 10; i++)
branch 0 taken 91%
branch 1 taken 9% (fallthrough)
10: 10:total += i;
-: 11:
1: 12: if (total != 45)
branch 0 taken 0% (fallthrough)
branch 1 taken 100%
#: 13:printf ("Failure\n");
call0 never executed
-: 14: else
1: 15:printf ("Success\n");
call0 returned 100%
1: 16: return 0;
-: 17:}
-: 18:
--
Summary: gcov reports incorrect branches executed
Product: gcc
Version: 4.4.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: gcov-profile
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: frodak17 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42015