Issue 148623
Summary [LLVM-COV] wrong coverage for std library function call
Labels new issue
Assignees
Reporter 8ss-boop
    llvm version:
clang version 21.0.0git (https://github.com/llvm/llvm-project.git 872eac7af0050813062baba9662beb81093b6b55)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /root/software/llvm-releases/llvm-0704/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64

```c
#include <stdatomic.h>
#include <stdio.h>
int main() {
    atomic_int ai = 42;  
    int val = atomic_load(&ai);
    int a = val + 10;
    int b = (a * 2) / (a != 0 ? a : 1);
    for (int i = 0; i < b && i < 50; ++i) { 
        printf("i=%d\n",i);
        if (i % 3 == 0)
            atomic_fetch_add(&ai, i);
    }
    printf("Final atomic value: %d\n", atomic_load(&ai));
    return 0;
}
```
for the program above, we got the following coverage report from llvm-cov 

```
/*
clang -std=c2x -lm -fcoverage-mapping -fprofile-instr-generate test.c
./a.out
llvm-profdata merge default.profraw  -o default.profdata;
llvm-cov show --show-line-counts -instr-profile="" ./a.out > test.c.lcov
*/

    1| |#include <stdatomic.h>
    2|       |#include <stdio.h>
    3|      1|int main() {
    4|      1|    atomic_int ai = 42;  
    5|      1|    int val = atomic_load(&ai);
    6|      1|    int a = val + 10;
    7|      1| int b = (a * 2) / (a != 0 ? a : 1);
    8|      3|    for (int i = 0; i < b && i < 50; ++i) { 
    9|      2|        printf("i=%d\n",i);
   10| 2|        if (i % 3 == 0)
   11|      2|            atomic_fetch_add(&ai, i);
   12|      2|    }
   13|       |    printf("Final atomic value: %d\n", atomic_load(&ai));
   14|      1|    return 0;
   15| 1|}

```

the output is:
```
i=0
i=1
Final atomic value: 42
```

so the line 11 should be executed only once  instead of twice
btw, no coverage count was given for line 13 which is rare for llvm

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to