hi i've noticed that in some cases, the test-coverage engine doesn't record obvious source stmts (e.g. 'return s' from testcase).
$ cat t.cpp #include <string> #include <cstdio> char foo( int i ) { return '0'; } std::string bar( int i ) { std::string s; s+= foo( i ); return s; } int main() { std::puts( bar( 42 ).c_str() ); } $ cat t.cpp.gcov -: 0:Source:t.cpp -: 0:Graph:t.gcno -: 0:Data:t.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#include <string> -: 2:#include <cstdio> -: 3: 1: 4:char foo( int i ) -: 5:{ 1: 6: return '0'; -: 7:} -: 8: 1: 9:std::string bar( int i ) -: 10:{ 1: 11: std::string s; 1: 12: s+= foo( i ); #####: 13: return s; -: 14:} -: 15: 1: 16:int main() -: 17:{ 1: 18: std::puts( bar( 42 ).c_str() ); -: 19:} -- Summary: buggy instrumentation - return statement never executed. Product: gcc Version: 4.4.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: gcov-profile AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pluto at agmk dot net GCC build triplet: x86_64-gnu-linux GCC host triplet: x86_64-gnu-linux GCC target triplet: x86_64-gnu-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42660