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

    <tr>
        <th>Summary</th>
        <td>
            [LLVM-COV] While loop coverage error caused by calling exit() function
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          zhangxy-97
      </td>
    </tr>
</table>

<pre>
    When the exit function is called in the while loop, the execution times of the while will be wrong.

`clang version 11.0.0
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9.3.0
Found candidate GCC installation: /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/10.2.0
Selected GCC installation: /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/10.2.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
  

    1|      1|#define TRUE 1
    2|       |#include <stdlib.h>
    3|      1|void myExit() { exit(0); }
    4|       |
    5|       |int tmp = 0;
    6|      1|int main() {
    7|      1|   if (1) {
    8|      1|      tmp++;
    9|      1|      tmp++;
   10|      1|   } else {
   11|      0|      ;
   12|      0|   }
   13|      2|   while (1) {
   14|      1|      int counter = 0;
   15|      1|      myExit();
   16|      1|      while (counter < 5) {
   17|      0|         return 0;
   18|      0|         counter++;
   19|      0|      }
   20|      1|      ;
   21|      1|      tmp = TRUE;
   22|      1|   }
   23|      1|}
   24|       |
`

Line 13 should be executed only once.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1Vttu2zAM_RrlRYhhyXZsP_ihTdphQIcBu7SPgy-KrU2RAl3aZF8_yrk4To1hGFojkGzxkDwiQ0qVavbFU8ckth3DbMctXjtZW64k5gbXpRCswfwgfum4YFgotUV0eVRgtevBlm-YwWp9AXzhQuAKZq1kG6BwhcKb47gIa1HKFj8zbbw2IUEYhAfht1K3zKLoBu-yxY9FPHfyl1Qvci64dLt5K90R12lWNnijGiY8eqsM3x1EH6WxPfMV116E6L0zGkahYEcwV1wekPfKyQa2KRvelJbhD8sl7LbXLv2-xtq8grGtaxiP3AZO9D55B5NBcgrLW5pN38FkEL8H0-ztTeZB9H9ML_479D4Ipj1t65EzEgb05O0rE6y2UE7v62Z53s7GCcu9MtgPUHSL4nCziK_I_A2E8WXVYngISpcYn94QjRq25pLhb1--38HSGUfPOHzAcVkL1zCMoqWxDfgLOhTdDQrRyPCz4sBsfwf9CNEM0Rys3PbtCT5D-AaisLQa9OOxw_N6Mlrn0mK72QKLFQ79Zs-4xci_x21Kn4GT8wGZjpAw8TVkLyOvgNk1EB5wjuit_106z_8VScJrJAQBM2HYyDUZzAwKIzv0GnAZTDIk44g7NPSpXZJ4grsPXw21ZZl-HWqSTGhc5noEXkyAz2wGH0tI9DWzdCII8GhmnZZXnLJp7NHBRCLyqQhfxJC-ytRVCiiZTnofMF9OIzCdyPsgHRfPSDRVF3D8Xtb1gy9gEmHTKScaf2IfjnVoDkqKPQw1C2ZNETV5lJczy61gBUpuHx4eP82Xnx9RssJP56sBxAxO9bIFK1orDd3VGbBU7fvLBIdDnw1VfbprzJwWRWft1kAbgn7m2x23nauCWm18BxTPp2m-1eontC745MY4ZvwxGSdpOuuKvFknWcXCdRVSQkieJIsmSetFGWZJXdNyJsoKisWTR5RK9oJ7E_AOe5jxgoaUhhFNwyymJAnWlMYlqVhD0zQFfWiNDLqCCDyPQOl2poueUuVaA0LBjTWDsDSGt5L1sfL2S2c7pYvfHdx8dvt5ns5670XP_g_FhJ88">