* 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 >