https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101409
Bug ID: 101409
Summary: [Gcov] the incorrect coverage of the "default”
statement in the "if" statement
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 int true_var = 1;
unsigned char false_var = 0;
int a;
void try_help () __attribute__ ((__noreturn__));
void try_help ()
{
}
int main ()
{
switch (a)
{
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
break;
if( true_var > 0 )
{
default:
try_help ();
}
}
}
——————————————————————————
$gcc -O0 --coverage test.c;./a.out;gcov test;cat test.c.gcov
-: 4:const int true_var = 1;
-: 5:unsigned char false_var = 0;
-: 6:
-: 7:int a;
-: 8:void try_help () __attribute__ ((__noreturn__));
1: 9:void try_help ()
-: 10:{
1: 11:}
-: 12:
1: 13:int main ()
-: 14:{
1: 15: switch (a)
-: 16: {
#####: 17: case '1':
-: 18: case '2':
-: 19: case '3':
-: 20: case '4':
-: 21: case '5':
-: 22: case '6':
-: 23: case '7':
-: 24: case '8':
-: 25: case '9':
#####: 26: break;
-: 27: if( true_var > 0 )
-: 28: {
-: 29: default:
1: 30: try_help ();
-: 31: }
-: 32: }
-: 33:}
Line 29 should be executed one time.