* Claudiu Zissulescu <claudiu.zissule...@synopsys.com> [2017-11-27 12:09:51 
+0100]:

> From: claziss <claz...@synopsys.com>
> 
> Make sure we mark the hw-loop labels as beeing used.
> 
> gcc/
> 2017-09-19  Claudiu Zissulescu  <claz...@synopsys.com>
> 
>       * config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start
>       labels number of usages.
> 
> gcc/testsuite
> 2017-09-19  Claudiu Zissulescu  <claz...@synopsys.com>
> 
>       * gcc.target/arc/loop-2.cpp: New test.

Looks good.

Thanks,
Andrew

> ---
>  gcc/config/arc/arc.c                    |  3 +++
>  gcc/testsuite/gcc.target/arc/loop-2.cpp | 18 ++++++++++++++++++
>  2 files changed, 21 insertions(+)
>  create mode 100644 gcc/testsuite/gcc.target/arc/loop-2.cpp
> 
> diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
> index 25f123c..964815a 100644
> --- a/gcc/config/arc/arc.c
> +++ b/gcc/config/arc/arc.c
> @@ -7702,6 +7702,9 @@ hwloop_optimize (hwloop_info loop)
>    /* Insert the loop end label before the last instruction of the
>       loop.  */
>    emit_label_after (end_label, loop->last_insn);
> +  /* Make sure we mark the begining and end label as used.  */
> +  LABEL_NUSES (loop->end_label)++;
> +  LABEL_NUSES (loop->start_label)++;
>  
>    return true;
>  }
> diff --git a/gcc/testsuite/gcc.target/arc/loop-2.cpp 
> b/gcc/testsuite/gcc.target/arc/loop-2.cpp
> new file mode 100644
> index 0000000..d1dc917
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/arc/loop-2.cpp
> @@ -0,0 +1,18 @@
> +/* { dg-options "-O2" } *
> +/* { dg-do assemble } */
> +
> +/* This file fails to assemble if we forgot to increase the number of
> +   uses for loop's start and end labels.  */
> +int a, c, d;
> +int *b;
> +void fn1(int p1) {
> +  if (d == 5)
> +    for (int i; i < p1; ++i)
> +      if (c)
> +        b[i] = c;
> +      else
> +        int t = a = t;
> +  else
> +    for (int i; i < p1; ++i)
> +      b[i] = 0;
> +}
> -- 
> 1.9.1
> 

Reply via email to