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

    <tr>
        <th>Summary</th>
        <td>
            [LLVM-COV] Coverage errors caused by macro definitions
        </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>
    The macro variable N is used in the If conditional statement, causing line 12 to be incorrectly marked as being executed once.

```
$ clang -v

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

```
Source code:
```
    1|      1|#define N 1
    2|      0|#define TRUE 1
    3|       |#include <stdlib.h>
    4|      0|#define ADD(a,b) a + b
    5|       |
    6|      0|void myExit() { exit(0); }
    7|       |
    8|       |int zero = 0;
    9|       |int tmp = 0;
   10|      1|int main() {
   11|      1|   if (zero > N) 
   12|      1|      return 0;
   13|      1|   else {
   14|      1|      exit(0);
   15|      1|   }
   16|      0|   if (zero > N) {
   17|      0|      myExit();
   18|      0|      tmp = TRUE;
   19|      0|   } else
   20|      0|      myExit();
   21|      0|   
   22|      0|   if (ADD(1, 2) != ADD(2, 1)) {
   23|      0|      ;
   24|      0|   }
   25|      0|}
```
In addition, the termination instruction should only be executed once in the main function, and line 12 should be marked as unexecuted.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1VluP2joQ_jXhxSJKnCsPPOzCcrRSzx6p3fa1cmwv8aljI18o9Nd3HCAQlq3UqhuhXDzffPPNxBmm0Ww_f2456gg1Gm2JEaSRHD0hYZG3nCGhkAP74wuiWjHhhFZEIuuI4x1XLsILRIm3Qq2RFIqjFCOnUcPBkWpjOHVyD-zmG3ARC4aA5DtOvYMVrSiPo2QZJXfHc5kcf4dHnCMqCbhMt5eww9qWGwt6UJrGSXz0eCZmzV2U3aFdXX4t86lX35T-rqagzu-ma-WPuNZwwlCnGZcBvdFW7A6mRwXpScnZUphgivDKWwNnqSmRcG2EOiBX2isG-UNhGBQE_bNYQN69NwmVGnuLBs5rSuF81HbWhFfFO1DGxaksf5O2egfKOH8PpfXfp5zF2Z8pvdg7eBXHtyNt6ChYmsT4FO0Tl_AxwTfzvmEWQzqdl04EZ-CPo-w-ypOuzK_E_Ap084v-pL2hHJoJ4-BzE4LgSKNqgdDpLsIZ4y-hvTzB8wDCAygZgZ4_fn64xGUDDh1w0JukZxxF2cI6BvLjNsoezg75G8R3y2WEawJND0o6QwTqfo-as18xDjSslyO-rRZQuP3DTkD7rANRVN1DT-wfE3iGOsLS8uxfvcFbj9aFcugHhzYeZUsIBC9jAM5eAV23eY1Lk1HZA64jYSedVJ6R4xcEF_EC1aiP8R_QU-8xwPE1HA7DnTfqSkF2DeTS8nHo_AbXuHpnbHGNvaxrOn4vbyVxGbu69oDj8lWOgtc3wKe6hz06As-uwaC0T36A4OQ3guP0Fd9gwrfTPuzuNPyl4z5x4AClh2UcltMQ5KokOLuhaqQkv5HZ2VqMrIPpqic8KkTYYfwIQsJI4rjphOpbYN8Pjaf9vW21l2G0gMED5pDRrHEaZ8KuRi9e0RMhdL1hfjkSNPxibvHqxBNP2Dxjs2xGJk44yedRcf_hw5d_p4v_vkTFEi00jCVkDYGN0cb20xFwNPvjjNW3kj4RO_FGzlvnNja0QrwKbVq41jcx1V3o3HJ7ukw3Rv8PLRcehbWe2_D3nhfVbNLOq5ryKqsqXrI0K2qGcU2rKkvTMqtYltKJJA1spCA0wljx76ingHvQOxFznGCcZLhK6iLHZZyyMklZ3lQ0Jw2mJbR0DvWScdARa7OemHkvqfFrC0YprLNnI7FWrBXv6xL4iXetNvMfLUxsu_10Vk366PNe_U8DW-d0">