https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101360
Bug ID: 101360 Summary: [Gcov] the assignment statement is marked as executed twice while the similar statement has executed one time Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: gcov-profile Assignee: unassigned at gcc dot gnu.org Reporter: byone.heng at gmail dot com CC: marxin at gcc dot gnu.org Target Milestone: --- $./gcc -v Using built-in specs. COLLECT_GCC=./gcc COLLECT_LTO_WRAPPER=/home/x/project/gcc/build/install/libexec/gcc/x86_64-pc-linux-gnu/11.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure --prefix=/home/x/project/gcc/build/install --enable-checking=release --enable-languages=c,c++ --disable-multilib Thread model: posix Supported LTO compression algorithms: zlib gcc version 11.0.0 20210105 (experimental) (GCC) $cat test.c const short int true_var = 1; static signed char false_var = 0; extern inline __attribute__ ((__always_inline__, __gnu_inline__)) char * strstr (const char *haystack, const char *needle) { return __builtin_strstr (haystack, needle); } int main (int argc, const char **argv) { if( true_var > 0 ) { char *substr = strstr (argv[0], "\n"); char *another = strstr (argv[0], "\r\n"); } return 0; } $gcc -O0 --coverage test.c;./a.out;gcov test;cat test.c.gcov -: 5:const short int true_var = 1; -: 6:static signed char false_var = 0; -: 7: -: 8:extern inline __attribute__ ((__always_inline__, __gnu_inline__)) char * -: 9:strstr (const char *haystack, const char *needle) -: 10:{ 2: 11: return __builtin_strstr (haystack, needle); -: 12:} -: 13: -: 14:int 1: 15:main (int argc, const char **argv) -: 16:{ 1: 17: if( true_var > 0 ) -: 18: { 1: 19: char *substr = strstr (argv[0], "\n"); 2: 20: char *another = strstr (argv[0], "\r\n"); -: 21: } 1: 22: return 0; -: 23:} Line 20 should be executed one time.