<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/148623>148623</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [LLVM-COV] wrong coverage for std library function call
        </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 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=default.profdata ./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

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0Vk2P27wR_jX0ZSCBpD598EG2o6JAih5a5BpQEiWzpUmDpOzNvy-Glr12dhfpInkFA7I4M898aObRCO_VZKTckGJLiv1KzOFg3ab2PumsPa06O_zYaH0-wlk6r6whWUNo02thptsRcJbSlE4qAOH1IYSTRy3eEt5OKhzmLu3tkfAWcZZbcnL2P7IPKVrVFZeir8RIaUFrltGSd6IT67LknexqRtdZV3ZFQfia0Obfwk0ykKyBl7r8XubJbP5r7MUkWpn5JZnMjEoHJ8UARztIjaon69ULoc3fjQ9CaznslcNzwltnbSC89XYMF-HkLUAntRRe-tszrWhOeNspQ2jT2tkM0AszqEEECX_b7UBdoUW4VgmhZ-_QXHVYib4nvF1Cfg2Vt4z9aUBOaPMvqWUf5PD7SLt7UMdZB4UmWQMpybYkp8cyf3T2oQb-Snr99fjAM2V6PQ8SSLbzYRDBHlWfHkj25T2xsjeRMgGOQhnCa8LXQKotoQ0AwBXhO8qFApLtIeck2wIschSchY6SRVdbMUScUihsrmz7oCuiZrTgW2D0WdpFKeG1AMIb4DEW3t5OGEopkKyNOA2wJ_zROtREoGuoiB7_7hCZl4SXy2MRRYRvCd-qJeNbSnidnDJhjFlwRbI94cVAip0hnBO-e04rBj9Gz0B4ARn6vrqPowUP11KiUYb-8F0MD3XawTMqqfbLv8dYWmWEXlCwirO8dt5jdB-9h0d0J8PsDCzlv_q6txKhDZYyHCScnJ2cOILo7Fki9kXCZEOUjVZre1Fmgt6epROTBCdP1gUYnT1CnO_enuGnRo2N2BL-yniJDwPJ9j1_gUQfIRlveMlRnE7oIBlPzo5KywSHziWTNNLh8ATpQ4qtnxLeitTOgdDmRoXjIIKAo3SThEGOYtYhxWMnLgCJfTpD1Wsx7nH7g71AkuAN51cmvZ1N8LDEsEREsv3POHAPBkj2ZYkx1b09x9xj-rEm-CYYqXZAqt0vZhdVOaper_cMXqcZNbK7Mnr4cL7zJ7X_Z-KLNxaf4YDyXeuPWaF61v99kqjvgLcK_SHaWN-BH97TZ4iEUbR7NP4FqzD2rstP8QzjbzDuzMOyp4b7i7iIvW3BZ3ZCQWw6FC9U9ROf0AYJyc7hNAdQ_rpOPWpg6W_3uBm8G3vO3wJ7G8kOCQAYQ1KY9QCdBPki-xk_z9boH2BNLyGuBLgh2RHCRfWS0KYLF6yDsa8sGXkELsLDpM7SxAa84mdwOaj-AMqDE05eJbjf0WY1bLJhna3FSm5YVfB8XRXrYnXYVD1nRdWNa1ZWedEN9ZqxnmW1zGgpe1av1IZTXtCK5YwXGSvSsq6HvhrGMhfrQeSM5FQehdIpukqtm1bK-1luWF6XPFtp0Unt4y7LuZEXiFJ8v8V-5eIem3Tz5ElOtfLBv8IEFXRcgr9-_faPZPfPb6TYw8XZx08GpujDAFp1TrgfMM6mx40KeqH1anZ687ndl_A2xocr5pLAecP_FwAA___e9UH4">