diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-04-19 18:47:06 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-04-19 18:47:06 +0200 |
commit | d708ce50e3a360ff34f855ce9089b040d1c87d74 (patch) | |
tree | ae49eaf183bfd32240b0075032f1c0521764b890 /gcc/config | |
parent | 49c471e3d8e5a505b20672f7029d07bb828cbe1b (diff) | |
download | gcc-d708ce50e3a360ff34f855ce9089b040d1c87d74.zip gcc-d708ce50e3a360ff34f855ce9089b040d1c87d74.tar.gz gcc-d708ce50e3a360ff34f855ce9089b040d1c87d74.tar.bz2 |
re PR target/48678 (unable to find a register to spill in class ‘GENERAL_REGS’)
PR target/48678
* config/i386/i386.md (movstrict<mode>): FAIL if operands[0]
is a SUBREG with non-MODE_INT mode inside of it.
* gcc.target/i386/pr48678.c: New test.
From-SVN: r172721
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.md | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 0e0ceed..38bdcd3 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -2425,6 +2425,9 @@ { if (TARGET_PARTIAL_REG_STALL && optimize_function_for_speed_p (cfun)) FAIL; + if (GET_CODE (operands[0]) == SUBREG + && GET_MODE_CLASS (GET_MODE (SUBREG_REG (operands[0]))) != MODE_INT) + FAIL; /* Don't generate memory->memory moves, go through a register */ if (MEM_P (operands[0]) && MEM_P (operands[1])) operands[1] = force_reg (<MODE>mode, operands[1]); |