<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/77871>77871</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Malformed MC/DC Coverage record with macro definitions
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
evodius96
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
chapuni
</td>
</tr>
</table>
<pre>
Clang -fcoverage-mcdc emits malformed records to crash llvm-cov with `assert(NumConds == 0);` if:
1. At least two decisions (passes with one decision)
2. Each expression has terms that come from macro definitions
Reproducible code (https://godbolt.org/z/xMGPafdvG)
```
#define D 1
extern void bar(void);
void foo(int a, int b) {
if (a && D) bar();
if (b && D) bar();
}
```
Unexpected `Branch` order will be seen.
```
Decision,File 0, 6:7 -> 6:13 = M:0, C:2
Branch,File 0, 6:7 -> 6:8 = #2, (#0 - #2) [1,2,0]
Expansion,File 0, 6:12 -> 6:13 = #2 (Expanded file = 1)
...
Decision,File 0, 7:7 -> 7:13 = M:1, C:2
Branch,File 0, 7:7 -> 7:8 = #5, (#0 - #5) [1,2,0]
Expansion,File 0, 7:12 -> 7:13 = #5 (Expanded file = 2)
...
Branch,File 1, 1:11 -> 1:12 = 0, 0 [2,0,0]
...
Branch,File 2, 1:11 -> 1:12 = 0, 0 [2,0,0]
```
("Decision, branch, branch, decision, branch, branch" is expected)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVd2OqzYQfprJzSjIHsJPLrjYhZNztVVVqQ9g8BBcAY5sJ7vt01cmbE52N9pKlSLi5Jv5fjCMlffmODNXkD0DEV-sNme_z4EIsmajzmGwruoGdTrPZtNa_XdVj2o-4rbv7IWdOvJ26nSHPJngcVJjb93EGh131mmPwWLnlB9wHC_TtrMXfDVhQMiF8p5dACp_O0-1nbVHSBtIGxRAe0ifIRdoekifQDQg1qtM8CngyMoHDK8WNXfGGzt7BCpPkdJfBezMNzDyLd2U4A_VDchvJ8c-Qjgoj4Hd5DEMKmBnJ8be2Qkn1bnI35vZhKhwb-MPPjmrz51pR8bOao7yQwgnH_3SAehwtLq1Y0isOwId_gE6vL38_F31-vLz5gdysX6uPyld9BgblPdy_BbYzXixRmOrHFAZl-ttuqtbCnprgUozB1RANcZFC7RHKNZaRNNHvwqBcqAcmwhfee8517L2P8qgaB6nWa5_zvx24i6wjnv-7NTcDXFnrdPs8NWMI7aMnnlO7ts-cSE2t72sD2bk-JDUmEP6VOAW0h_LUqbxEcIXSJ8WuIb0iVaCVfmb7nJpBkopgkvIVOB2_WePkD1LoDqiArIG3539eDup-aE1SV-8RbLIvTRp1tjHjojI21ORJMm3qYtfvouPqeXn1I9if2q_xc6-xM6-if04dXGXuviQOnucmh6k_uh5ySQjl7zyyqvGOilqFNHi1d4Hi3e38SMj_V_GL69rCUR3W4Ttu87dSn-LExqP728I0H6jq1Tv073acCULkYl0J2W-GapOtpTvszbf5dTvyjLb5ZKLvE3TkkW5lxtTkaCdkJLELs1knmRCMAm964tUtIXuYSd4UmZM4iSOY2ljvD9zVRRlITejann06zEw8ysu4HoMuGqZ3u356GEnRuOD_8USTBi5erlN_pca6NDUWK_nw3oUXMfyl6m6Obux-jQ5TRjObdLZCegQZdav7cnZv7gLQIfFnAc6LOb_DQAA__-Skdi9">