On 3/31/22 16:55, Sebastian Huber wrote:
Hello,

gcov supports currently branch coverage. Some projects require modified 
condition/decision coverage (MC/DC):

https://en.wikipedia.org/wiki/Modified_condition/decision_coverage

In general, 100% branch coverage does not imply 100% MC/DC coverage:

https://www.adacore.com/uploads_gems/Couverture_ERTS-2012.pdf

The paper contains a criterion under which 100% branch coverage implies 100% 
MC/DC coverage:

"Theorem 1 If the BDD of a decision D is a tree (with
only one path from the root to any condition node),
then BDD edge coverage implies MCDC"

The BDD is the Binary Decision Diagram. I have no idea how the compiler and the 
coverage supports works in GCC. Is this BDD available for the coverage support 
and could the coverage support check for this property and then for example add 
it to the gcov information? If the BDD of a decision is not a tree, then we 
would have to record which paths through the BDD are covered to get the MC/DC 
coverage. This would require extra storage and instrumentation. According to 
the paper, the BDD is usually a tree in real world applications. Does this 
sound like feasible feature for GCC? Could it be even a GSoC project?

Kind regards,
     Sebastian


Hi.

There's a patch review for the feature:
https://gcc.gnu.org/pipermail/gcc-patches/2022-March/592065.html

Martin

Reply via email to