[cfe-dev] probable bug in clang source based coverage

Michał Pszona via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 20 07:30:21 PDT 2017


I have also found very similar output for switch..case and if..else if
expressions.
regards,
Michał Pszona


On Mon, Mar 20, 2017 at 1:37 PM, Michał Pszona <pszona at gmail.com> wrote:
> All,
>
> I am parsing llvm-cov exports (json files) and I was surprised by some
> of the outputs.
> I was able to narrow it to the below example:
>
> the source file:
>
> int main (int argc, char* argv[])
> {
>    if ((argc > 1) && (argc < 10))
>    {
>    }
> }
>
> the output:
> https://gist.github.com/meahow/84f39ed625d138b42ee1b9cde7613b6a
>
> The confusing part is in segments section:
>
> "segments": [
>    [2,1,1,1,1],
>    [3,8,1,1,1],
>    [3,22,0,1,1],
>    [3,33,1,1,0],
>    [4,4,0,1,1],
>    [5,5,1,1,0],
>    [6,2,0,0,0]
> ],
>
>
> It looks like there is unclosed region produced.
> There are two opening marks in line 3 (cols 8 and 22) and one closing.
> I believe that there should be another closing one in col 17.
>
> It looks like this behavior is easily reproducible with multi
> statement conditions in if expression like this:
>
> if ( (a > 1) && (a < 5))
> {}
>
> Can someone confirm that this is a bug or if I'm not getting it right ?
>
>
> regards,
> Michał Pszona



More information about the cfe-dev mailing list