[ARC] Update uses for hw-loop labels.
authorClaudiu Zissulescu <claziss@synopsys.com>
Thu, 30 Nov 2017 14:42:01 +0000 (15:42 +0100)
committerClaudiu Zissulescu <claziss@gcc.gnu.org>
Thu, 30 Nov 2017 14:42:01 +0000 (15:42 +0100)
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.

From-SVN: r255274

gcc/ChangeLog
gcc/config/arc/arc.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arc/loop-2.cpp [new file with mode: 0644]

index ddcd9832f524e2ef00903033978a13a0bdddf062..945490947dfec44a1945184da589c549ce299170 100644 (file)
@@ -1,3 +1,8 @@
+2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start
+       labels number of usages.
+
 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
 
        * config/arc/arc.c (arc_cannot_substitue_mem_equiv_p): New
index e739d60a64af0a74ce0532b287df5d6f58260dda..57ea502db4a0d6f9e35a2ff733c5cfdd4b5cd1b1 100644 (file)
@@ -7501,6 +7501,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;
 }
index f12d075a1e615fa8dd09f8b9d843b9b37f9809ed..1b5359d319e1eb3371936806002a496f1279bfaf 100644 (file)
@@ -1,3 +1,7 @@
+2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * gcc.target/arc/loop-2.cpp: New test.
+
 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
 
        * gcc.target/arc/lra-1.c: New test.
diff --git a/gcc/testsuite/gcc.target/arc/loop-2.cpp b/gcc/testsuite/gcc.target/arc/loop-2.cpp
new file mode 100644 (file)
index 0000000..d1dc917
--- /dev/null
@@ -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;
+}