> gcc/ChangeLog:
> 
>       * doc/gcov.texi: Add MC/DC section.
OK,
thanks!
Honza
> ---
>  gcc/doc/gcov.texi | 72 +++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 72 insertions(+)
> 
> diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi
> index dc79bccb8cf..a9221738cce 100644
> --- a/gcc/doc/gcov.texi
> +++ b/gcc/doc/gcov.texi
> @@ -917,6 +917,78 @@ of times the call was executed will be printed.  This 
> will usually be
>  100%, but may be less for functions that call @code{exit} or @code{longjmp},
>  and thus may not return every time they are called.
>  
> +When you use the @option{-g} option, your output looks like this:
> +
> +@smallexample
> +$ gcov -t -m -g tmp
> +        -:    0:Source:tmp.cpp
> +        -:    0:Graph:tmp.gcno
> +        -:    0:Data:tmp.gcda
> +        -:    0:Runs:1
> +        -:    1:#include <stdio.h>
> +        -:    2:
> +        -:    3:int
> +        1:    4:main (void)
> +        -:    5:@{
> +        -:    6:  int i, total;
> +        1:    7:  total = 0;
> +        -:    8:
> +       11:    9:  for (i = 0; i < 10; i++)
> +condition outcomes covered 2/2
> +       10:   10:    total += i;
> +        -:   11:
> +       1*:   12:  int v = total > 100 ? 1 : 2;
> +condition outcomes covered 1/2
> +condition  0 not covered (true)
> +        -:   13:
> +       1*:   14:  if (total != 45 && v == 1)
> +condition outcomes covered 1/4
> +condition  0 not covered (true)
> +condition  1 not covered (true false)
> +    #####:   15:    printf ("Failure\n");
> +        -:   16:  else
> +        1:   17:    printf ("Success\n");
> +        1:   18:  return 0;
> +        -:   19:@}
> +@end smallexample
> +
> +For every condition the number of taken and total outcomes are
> +printed, and if there are uncovered outcomes a line will be printed
> +for each condition showing the uncovered outcome in parentheses.
> +Conditions are identified by their index -- index 0 is the left-most
> +condition.  In @code{a || (b && c)}, @var{a} is condition 0, @var{b}
> +condition 1, and @var{c} condition 2.
> +
> +An outcome is considered covered if it has an independent effect on
> +the decision, also known as masking MC/DC (Modified Condition/Decision
> +Coverage).  In this example the decision evaluates to true and @var{a}
> +is evaluated, but not covered.  This is because @var{a} cannot affect
> +the decision independently -- both @var{a} and @var{b} must change
> +value for the decision to change.
> +
> +@smallexample
> +$ gcov -t -m -g tmp
> +        -:    0:Source:tmp.c
> +        -:    0:Graph:tmp.gcno
> +        -:    0:Data:tmp.gcda
> +        -:    0:Runs:1
> +        -:    1:#include <stdio.h>
> +        -:    2:
> +        1:    3:int main()
> +        -:    4:@{
> +        1:    5:  int a = 1;
> +        1:    6:  int b = 0;
> +        -:    7:
> +        1:    8:  if (a && b)
> +condition outcomes covered 1/4
> +condition  0 not covered (true false)
> +condition  1 not covered (true)
> +    #####:    9:    printf ("Success!\n");
> +        -:   10:  else
> +        1:   11:    printf ("Failure!\n");
> +        -:   12:@}
> +@end smallexample
> +
>  The execution counts are cumulative.  If the example program were
>  executed again without removing the @file{.gcda} file, the count for the
>  number of times each line in the source was executed would be added to
> -- 
> 2.39.2
> 

Reply via email to