Meaning of llvm-cov 'taken at least once'

Hi list,
Today I played around with the llvm-cov from the 3.5rc3 release; here
is an example of output:

Function 'main'
Lines executed:91.67% of 24
Branches executed:100.00% of 11
Taken at least once:81.82% of 11
No calls

What is the meaning of 'branches executed' versus 'taken at least
once'? I would imagine that the first implied the second, so I'm
clearly missing something.

Also, what is the alternative to 'no calls'? I see that in every
function in my single-file example; does it mean calls across
compilation units?

Thanks,
George

George King <gwk.lists@gmail.com> writes:

Today I played around with the llvm-cov from the 3.5rc3 release; here
is an example of output:

Function 'main'
Lines executed:91.67% of 24
Branches executed:100.00% of 11
Taken at least once:81.82% of 11
No calls

What is the meaning of 'branches executed' versus 'taken at least
once'? I would imagine that the first implied the second, so I'm
clearly missing something.

Branches executed means the branch condition was evaluated, whereas
taken at least once means that the branch was followed. A condition
that's always false will be executed but not taken.

Also, what is the alternative to 'no calls'? I see that in every
function in my single-file example; does it mean calls across
compilation units?

This looks like an unimplemented feature. My understanding is that clang
doesn't provide the necessary instrumentation for this to tell you
anything interesting.