Issue 149040
Summary [LLVM-COV] Exiting in callee causes incorrect cov in caller
Labels new issue
Assignees
Reporter 8ss-boop
    llvm version:
clang version 21.0.0git (https://github.com/llvm/llvm-project.git https://github.com/llvm/llvm-project/commit/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

```
#include <stdlib.h>
[[noreturn]] void fatal(const char *msg) {
    __builtin_printf("Error: %s\n", msg);
 exit(EXIT_FAILURE);
    __builtin_printf("Final\n");
}
int main() {
 fatal("Multiplication overflow");
    __builtin_printf("Final\n");
 int a;
    return EXIT_SUCCESS;
}
```

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 <stdlib.h>
    2|      1|[[noreturn]] void fatal(const char *msg) {
    3|      1|    __builtin_printf("Error: %s\n", msg);
    4|      1| exit(EXIT_FAILURE);
    5|      0|    __builtin_printf("Final\n");
 6|      0|}
    7|      1|int main() {
    8|      1| fatal("Multiplication overflow");
    9|      1| __builtin_printf("Final\n");
   10|      1|    int a;
   11|       | return EXIT_SUCCESS;
   12|      1|}
```

lines 9, 10, 11 were not executed actually.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to