<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/78922>78922</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Coverage][MC/DC] Wrong BitmapIdx calculation in `getMaxBitmapSize`
</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>
In `CoverageMapping.cpp:getMaxBitmapSize`,
https://github.com/llvm/llvm-project/commit/8ecbb0404d740d1ab173554e47cef39cd5e3ef8c#diff-44b7cba1a9d87f9ec9e067d93ea9d29ea4d9c669942d73f89233e39e28f9a5f0R565-R581
This assumes the last `Decision` has the maximum `BitmapIdx`. It is not true.
It may crash`llvm-cov` with unexpected test vector.
(https://godbolt.org/z/5bGYa8foe)
```
#define RANGE(a,b,c) ((a) <= (b) && (b) <= (c))
int foo(int c) {
if (RANGE('A', c, 'F')) return 1;
return ('0' <= c && c <= '9');
}
```
```
foo:
(snip)
Expansion,File 0, 4:7 -> 4:12 = #0 (Expanded file = 1)
(snip)
Decision,File 0, 5:11 -> 5:31 = M:1, C:2
(snip)
Decision,File 1, 1:23 -> 1:47 = M:0, C:2
(snip)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUlM9v6zYMx_8a5iI0kClbPw45pM7LQw_doRsw7ChLdKLBsQ1L7ut7f_0gO0mLrocNCBya9PdDihBpYwynnmgH1SMg0uvgwxyNBESoDhs7p_Mw7dzZjnMfNs3gf-6eegaS18MrTfZEz3YcQ3_aunEEsT9RerZvjyFd7Ph7-EUgOWAN_AB8f05pjCD2gEfA4ymk89xs3XABPHbd6-3vYZyGv8klwKMbLpeQDU2uaXjJS69K7gvbFEpUVUmlctQK43xFglrtAIUPbftQlo1yjS2s8Vq1hpwhLpU3gqzxaMiW3jgpjSnRK9Fqg0KQMIS6NbZq-Uslq4eXShdr4evzj3OIzMY4XyiydCbW2ZhyJw7kQgxDD5Kzs11jF_sWLvMlh9dmPPk3kHzLnhILkfVDYmmaabuinxK72J_MTTaeQfKlDW54zcAfIZ3Z3NPbSC6RZ4liYq_k0jBt2cfyAPWnBg--Gbq0HaYT4PEX4LFqvv9ldTsQoLmKJL_-rgzhqQ09sZf9b9-_AWoLWDeAtQM0DFCvLsNA1CAO2dOsEQko31_v0ax7z7Y8Q59YOwyAOlsrWD2uMcZCm2W39IBqD6gA6_xhzQDVcXnPUDZRmqeeFSDu8qtrlXJAdavF3Wp079Upc2Xd9KAOX_flK2c-g9jfEgPq2IfxflbGvr2Ntl_uBdbH0BHLk8BKEHvFHkB8W8wC2VqL4BmxaDx51mZBjhQfiP_Ocb96H1NUmVusObItioX0nN05XoPY439nLpoia8TKzHap7kz-mfkZee_bxu-EN8LYDe0KxSutZaX15rxrXaGaolVVSU1lJHeNlqVtnVKlN7ppNmGHHEteIPICBddb6RtTtkp6aSUqyaHkdLGh2-bZyVd-E2Kcaae0Qdx0tqEuXldcTz_YEryuuGm3zFsznyKUvAsxxXdKCqlbduNt3UF1gOrxuQY8HmqoDuzPaehP7D7kzNnOzZ1NYehZWDblFztxM0_d7n_vw6XqCHhcTvVPAAAA__-AWpXJ">