https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121243

            Bug ID: 121243
           Summary: [GCOV] [[fallthrough]] leads wrong cov for
                    case-statement.
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: gcov-profile
          Assignee: unassigned at gcc dot gnu.org
          Reporter: njuwy at smail dot nju.edu.cn
  Target Milestone: ---

gcc version:
gcc version 16.0.0 20250704 (experimental) (GCC) 

cmd:
gcc --coverage -std=c2x -lm -O0 test.c -o test
./test
gcov ./*.gcda -t > test.c.gcov

$ cat test.c
int main(void) {
    for ( int i = 0; i < 4; ++i)
        switch (i) {
            case 0: 
                [[fallthrough]];
            case 1:
                if (i % 2 == 0) break;
            default:
                break;
        }
    return 0;
}

$ cat test.c.gcov
        1:    1:int main(void) {
        5:    2:    for ( int i = 0; i < 4; ++i)
        4:    3:        switch (i) {
        2:    4:            case 0: 
        -:    5:                [[fallthrough]];
        -:    6:            case 1:
        2:    7:                if (i % 2 == 0) break;
        -:    8:            default:
        3:    9:                break;
        -:   10:        }
        1:   11:    return 0;
        -:   12:}


Cov of line 3 should be 1 instead of 2.
  • [Bug gcov-profile/121243] New: ... njuwy at smail dot nju.edu.cn via Gcc-bugs

Reply via email to