On Tue, Oct 11, 2022 at 2:43 PM Jørgen Kvalsvik
<jorgen.kvalsvik@woven-planet.global> wrote:
>
> Add a test to catch regression in line counts for labels on top of
> then/else blocks. Only the 'goto <label>' should contribute to the line
> counter for the label, not the if.

OK.

> gcc/testsuite/ChangeLog:
>
>         * gcc.misc-tests/gcov-4.c:
> ---
>  gcc/testsuite/gcc.misc-tests/gcov-4.c | 26 +++++++++++++++++++++++++-
>  1 file changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/testsuite/gcc.misc-tests/gcov-4.c 
> b/gcc/testsuite/gcc.misc-tests/gcov-4.c
> index 498d299b66b..da7929ef7fc 100644
> --- a/gcc/testsuite/gcc.misc-tests/gcov-4.c
> +++ b/gcc/testsuite/gcc.misc-tests/gcov-4.c
> @@ -110,6 +110,29 @@ lab2:
>    return 8;                            /* count(1) */
>  }
>
> +int
> +test_goto3 (int i, int j)
> +{
> +    if (j) goto else_;         /* count(1) */
> +
> +top:
> +    if (i)                     /* count(1) */
> +      {
> +       i = do_something (i);
> +      }
> +    else
> +      {
> +else_:                         /* count(1) */
> +       j = do_something (j);   /* count(2) */
> +       if (j)                  /* count(2) */
> +         {
> +           j = 0;              /* count(1) */
> +           goto top;           /* count(1) */
> +         }
> +      }
> +    return 16;
> +}
> +
>  void
>  call_goto ()
>  {
> @@ -117,6 +140,7 @@ call_goto ()
>    goto_val += test_goto1 (1);
>    goto_val += test_goto2 (3);
>    goto_val += test_goto2 (30);
> +  goto_val += test_goto3 (0, 1);
>  }
>
>  /* Check nested if-then-else statements. */
> @@ -260,7 +284,7 @@ main()
>    call_unref ();
>    if ((for_val1 != 12)
>        || (for_val2 != 87)
> -      || (goto_val != 15)
> +      || (goto_val != 31)
>        || (ifelse_val1 != 31)
>        || (ifelse_val2 != 23)
>        || (ifelse_val3 != 246)
> --
> 2.34.0
>

Reply via email to