<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">