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