diff options
author | Claudiu Zissulescu <claziss@synopsys.com> | 2017-06-01 11:43:10 +0200 |
---|---|---|
committer | Claudiu Zissulescu <claziss@gcc.gnu.org> | 2017-06-01 11:43:10 +0200 |
commit | 7841f13c8064c7d8f4eb13acd396bd0455e12c26 (patch) | |
tree | 7826298d1c9d279bad4efb7c7604907c711d760b | |
parent | 19dc47524f9bd79cf5c8bc0dcb4a1c381b88391d (diff) | |
download | gcc-7841f13c8064c7d8f4eb13acd396bd0455e12c26.zip gcc-7841f13c8064c7d8f4eb13acd396bd0455e12c26.tar.gz gcc-7841f13c8064c7d8f4eb13acd396bd0455e12c26.tar.bz2 |
[ARC] Fix tst_movb pattern.
The tst_movb pattern is missing guarding when spitting.
gcc/
2017-06-01 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.md (tst_movb): Add guard when splitting.
testsuite/
2017-06-01 Claudiu Zissulescu <claziss@synopsys.com>
* gcc.target/arc/pr9001195952.c: New test.
From-SVN: r248783
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/arc/arc.md | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rwxr-xr-x | gcc/testsuite/gcc.target/arc/pr9001195952.c | 11 |
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ce7085b..9ff24c9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2017-06-01 Claudiu Zissulescu <claziss@synopsys.com> + * config/arc/arc.md (tst_movb): Add guard when splitting. + +2017-06-01 Claudiu Zissulescu <claziss@synopsys.com> + * config/arc/arc.c (arc_can_eliminate): Test against arc_frame_pointer_needed. diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md index 5014138..9aa9cd7 100644 --- a/gcc/config/arc/arc.md +++ b/gcc/config/arc/arc.md @@ -840,7 +840,7 @@ (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/ChangeLog b/gcc/testsuite/ChangeLog index d8e3952..952bc93 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2017-06-01 Claudiu Zissulescu <claziss@synopsys.com> + + * gcc.target/arc/pr9001195952.c: New test. + 2017-06-01 Tom de Vries <tom@codesourcery.com> * c-c++-common/pr43395.c: Add dg-require-effective-target label_values. 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(); +} |