diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2020-03-02 21:13:36 +0100 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2020-03-02 21:13:36 +0100 |
commit | b80cbe2d8d46c8518dca2d781c8ee4d02c5ba1ed (patch) | |
tree | 4e456065b6e21f0a43ee0eec6b303f71233fa8a0 /gcc | |
parent | f26688fbe441375e907f0dd2f35837681870b1f4 (diff) | |
download | gcc-b80cbe2d8d46c8518dca2d781c8ee4d02c5ba1ed.zip gcc-b80cbe2d8d46c8518dca2d781c8ee4d02c5ba1ed.tar.gz gcc-b80cbe2d8d46c8518dca2d781c8ee4d02c5ba1ed.tar.bz2 |
i386: Allow only registers with VALID_INT_MODE_P modes in movstrict<mode> [PR93997]
*movstrict<mode>_1 insn pattern allows only general registers,
so we have to reject modes not suitable for general regs in
corresponding movstrict<mode> expander.
PR target/93997
* config/i386/i386.md (movstrict<mode>): Allow only
registers with VALID_INT_MODE_P modes.
testsuite/ChangeLog:
PR target/93997
* gcc.target/i386/pr93997.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr93997.c | 4 |
4 files changed, 16 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0d65434..d27b74a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2020-03-02 Uroš Bizjak <ubizjak@gmail.com> + + PR target/93997 + * config/i386/i386.md (movstrict<mode>): Allow only + registers with VALID_INT_MODE_P modes. + 2020-03-02 Andrew Stubbs <ams@codesourcery.com> * config/gcn/gcn-valu.md (dpp_move<mode>): New. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 6c57500..8e29dff 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -2778,7 +2778,7 @@ { gcc_assert (SUBREG_P (operands[0])); if ((TARGET_PARTIAL_REG_STALL && optimize_function_for_speed_p (cfun)) - || GET_MODE_CLASS (GET_MODE (SUBREG_REG (operands[0]))) != MODE_INT) + || !VALID_INT_MODE_P (GET_MODE (SUBREG_REG (operands[0])))) FAIL; }) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e18c6a9..e43c554 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-03-02 Uroš Bizjak <ubizjak@gmail.com> + + PR target/93997 + * gcc.target/i386/pr93997.c: New test. + 2020-03-02 Martin Sebor <msebor@redhat.com> PR tree-optimization/92982 diff --git a/gcc/testsuite/gcc.target/i386/pr93997.c b/gcc/testsuite/gcc.target/i386/pr93997.c new file mode 100644 index 0000000..350d1ea --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr93997.c @@ -0,0 +1,4 @@ +/* { dg-do compile { target ia32 } } */ +/* { dg-options "-march=athlon-4" } */ + +#include "../../c-c++-common/vector-scalar.c" |