* Claudiu Zissulescu <claudiu.zissule...@synopsys.com> [2017-05-24 12:54:22 +0200]:
> From: claziss <claz...@synopsys.com> > > The tst_movb pattern is missing guarding when spitting. > > gcc/ > 2017-05-24 Claudiu Zissulescu <claz...@synopsys.com> > > * config/arc/arc.md (tst_movb): Add guard when splitting. Looks good. Sorry for introducing this issue. Thanks, Andrew > > testsuite/ > 2017-05-24 Claudiu Zissulescu <claz...@synopsys.com> > > * gcc.target/arc/pr9001195952.c: New test. > --- > gcc/config/arc/arc.md | 2 +- > gcc/testsuite/gcc.target/arc/pr9001195952.c | 11 +++++++++++ > 2 files changed, 12 insertions(+), 1 deletion(-) > create mode 100755 gcc/testsuite/gcc.target/arc/pr9001195952.c > > diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md > index e78abaa..d5510ae 100644 > --- a/gcc/config/arc/arc.md > +++ b/gcc/config/arc/arc.md > @@ -863,7 +863,7 @@ archs4xd, archs4xd_slow" > (clobber (match_scratch:SI 3 "=X,X,X,X,X,X,Rrq,Rrq,c"))] > "TARGET_NPS_BITOPS" > "movb.f.cl %3,%1,%p2,%p2,%s2" > - "reload_completed > + "TARGET_NPS_BITOPS && reload_completed > && (extract_constrain_insn_cached (insn), (which_alternative & ~1) != 6)" > [(set (match_dup 0) (match_dup 4))]) > > diff --git a/gcc/testsuite/gcc.target/arc/pr9001195952.c > b/gcc/testsuite/gcc.target/arc/pr9001195952.c > new file mode 100755 > index 0000000..252438d > --- /dev/null > +++ b/gcc/testsuite/gcc.target/arc/pr9001195952.c > @@ -0,0 +1,11 @@ > +/* { dg-do compile } */ > +/* { dg-skip-if "" { ! { clmcpu } } } */ > +/* { dg-options "-mcpu=archs -Os -w -fpic" } */ > + > +/* tst_movb split pattern is wrong for anything else than NPS > + chip. */ > +__bswap_32___bsx() { > + int a = __builtin_bswap32(__bswap_32___bsx); > + if (a & 1048575) > + zlog_warn(); > +} > -- > 1.9.1 >