diff mbox series

[02/10,ARC,ZOL] Update uses for hw-loop labels.

Message ID 1511780999-27757-3-git-send-email-claziss@synopsys.com
State New
Headers show
Series Critical fixes | expand

Commit Message

Claudiu Zissulescu Nov. 27, 2017, 11:09 a.m. UTC
From: claziss <claziss@synopsys.com>

Make sure we mark the hw-loop labels as beeing used.

gcc/
2017-09-19  Claudiu Zissulescu  <claziss@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  <claziss@synopsys.com>

	* gcc.target/arc/loop-2.cpp: New test.
---
 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

Comments

Andrew Burgess Nov. 27, 2017, 11:27 p.m. UTC | #1
* Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com> [2017-11-27 12:09:51 +0100]:

> From: claziss <claziss@synopsys.com>
> 
> Make sure we mark the hw-loop labels as beeing used.
> 
> gcc/
> 2017-09-19  Claudiu Zissulescu  <claziss@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  <claziss@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
>
diff mbox series

Patch

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;
+}