aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-09-29 19:05:22 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1996-09-29 19:05:22 -0400
commit50dc6373e56ad31b2fca259589d4282b7abb5598 (patch)
tree883491485edf5694f257280a03e1725d914961db /gcc
parentc2722ef63b29f3ed9f0536e26cf756f902dee97f (diff)
downloadgcc-50dc6373e56ad31b2fca259589d4282b7abb5598.zip
gcc-50dc6373e56ad31b2fca259589d4282b7abb5598.tar.gz
gcc-50dc6373e56ad31b2fca259589d4282b7abb5598.tar.bz2
(register_operand): Don't reject subreg of complex mode.
From-SVN: r12868
Diffstat (limited to 'gcc')
-rw-r--r--gcc/recog.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index 65e997d..1322f41 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -871,7 +871,9 @@ register_operand (op, mode)
&& TEST_HARD_REG_BIT (reg_class_contents[(int) CLASS_CANNOT_CHANGE_SIZE],
REGNO (SUBREG_REG (op)))
&& (GET_MODE_SIZE (mode)
- != GET_MODE_SIZE (GET_MODE (SUBREG_REG (op)))))
+ != GET_MODE_SIZE (GET_MODE (SUBREG_REG (op))))
+ && GET_MODE_CLASS (GET_MODE (SUBREG_REG (op))) != MODE_COMPLEX_INT
+ && GET_MODE_CLASS (GET_MODE (SUBREG_REG (op))) != MODE_COMPLEX_FLOAT)
return 0;
#endif