<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/149040>149040</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LLVM-COV] Exiting in callee causes incorrect cov in caller
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
8ss-boop
</td>
</tr>
</table>
<pre>
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=default.profdata ./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.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVl1v2zYU_TX0y4UEivp-8INiW0OBFgOWtthbQFFXMjeKNEjKdv_9QMV26i7tEGSAEEXkuYeH995DkzsnR424JvkDybcrPvu9sevKuagz5rDqTP9trdRxgiNaJ40maUNoIxTX43UIWBLTmI7SA2HV3vuDCyjWEtaO0u_nLhZmIqwNPJdXdLDmLxQ-DlFvCyGsFWaaZPinKhlyUfKB0pxWSUoL1vGO10XBOuyqhNZpV3R5TlhNaPOZ2xE9SRs4V8VTkUWz_lubk46U1PM5GvUcQHuLvIfJ9KgC9GCcPBPafNDOc6Ww30obxglrrTFBhDODP3GLV50WFXKH7vpNS5oR1nZSE9q0ZtY9CK572XOP8NtmA_KZmvvn_Abq2dkQLruQECEIay-SX6SyNkn-b0JGaPOICoXH_v1Mm5uoaVZehpC0gZikDySjU5F9v9hPEeEp6OWhDWGp1ELNPQJJN873SnbxnqS7MBd6-EEbi362muRbkm_haGQPA_dcEVYJo50HsecWCGsmNxJWAykfCG0AAJ6eulkqL_XTwUrtB8IqwtjOWnMpee5IvtGEMcI28BwetNIG8Bwastr9-eHzU9t8-Pjlj93L5E-pW6m5ulFe4KTcEtpI7WHiUi_Am8jrRghjn0LGDkqKpThgjmgHZU7fM71xYQhr8pfQ5zzCsqfHL5vN7vHxe4V3ZaHNYCz4PcLBmtHyCXhnjhjydEIYjV_mBqOUOUk9ggh6-Yhg8WCsh8GaCRa7CHN8rewtYS8nT-R8T9KtYGeI1ATRcKWLJn44BP5oOFgzSIVRaGEbjajRhlb06HwsCG1iwloem9kT2lzPl6HnnsOEdkToceCz8nEYtvwEEJm7sQB9TsdVNri9OUEUhVdwA0bCzNo7uGi4KCLp9kceuIkBku4uGmN1SQVbtr_kJJQlIeUGSLn5lRUCjgUcXCPebY70ju6ddgGA7J7vvwyU3-D0l8u_3tnFXfRz_4av8k7E654DgOpe69tdWN8TvEU6QEL_lfp7pybJDRAa4-fGDdgf2uI1K4fedVCHqiV0-ZvACS2CNh7wjGIORzYXfuZKfYtX_Trt67TmK1wnZc6KvCiKcrVfZ4JXeVlldT9UFFmWiyTvi6Ee6qGqS44ruWaU5bRMClrTjJVxWVVV19csSeu0Zl1HMooTlyoOHouNHVfSuRnXSVbTjK4U71C55fLCmMYTLLMhffl2ZZeLS9TNoyMZVdJ590LjpVfLrefjx6-fos3vX4Mddmfpw-EhNYjwW48g-OzQgdTCWIvCh3PrNm1Xs1XrN99eFo3hdnDZxHHN_gkAAP__2A7XMg">