aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNick Clifton <nickc@cygnus.com>1999-04-10 13:12:10 +0000
committerNick Clifton <nickc@gcc.gnu.org>1999-04-10 13:12:10 +0000
commite9c6b69b61b17c1aff79fa933eeacae3c11e2eff (patch)
tree6bb88bc8628cddb96cbe01adc463150d38e7be04 /gcc
parent7ac7b28f2e8891ab210369c1f2cefed50f6e9416 (diff)
downloadgcc-e9c6b69b61b17c1aff79fa933eeacae3c11e2eff.zip
gcc-e9c6b69b61b17c1aff79fa933eeacae3c11e2eff.tar.gz
gcc-e9c6b69b61b17c1aff79fa933eeacae3c11e2eff.tar.bz2
Allow SUBREGs in place of REGs in soft_df_operand and di_operand
From-SVN: r26336
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c10
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fc06842..f50a947 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Sat Apr 10 13:09:18 1999 Nick Clifton <nickc@cygnus.com>
+
+ * config/arm/arm.c (di_operand): Allow SUBREGs as well.
+ (soft_df_operand): Allow SUBREGs as well.
+
Sat Apr 10 06:14:31 1999 Jan Hubicka <hubicka@paru.cas.cz>
* extend.texi (Assembler Instructions with C Expression Operands):
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 52257ba..d84efe7 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -2192,7 +2192,7 @@ power_of_two_operand (op, mode)
}
/* Return TRUE for a valid operand of a DImode operation.
- Either: REG, CONST_DOUBLE or MEM(DImode_address).
+ Either: REG, SUBREG, CONST_DOUBLE or MEM(DImode_address).
Note that this disallows MEM(REG+REG), but allows
MEM(PRE/POST_INC/DEC(REG)). */
@@ -2204,6 +2204,9 @@ di_operand (op, mode)
if (s_register_operand (op, mode))
return TRUE;
+ if (GET_CODE (op) == SUBREG)
+ op = SUBREG_REG (op);
+
switch (GET_CODE (op))
{
case CONST_DOUBLE:
@@ -2219,7 +2222,7 @@ di_operand (op, mode)
}
/* Return TRUE for a valid operand of a DFmode operation when -msoft-float.
- Either: REG, CONST_DOUBLE or MEM(DImode_address).
+ Either: REG, SUBREG, CONST_DOUBLE or MEM(DImode_address).
Note that this disallows MEM(REG+REG), but allows
MEM(PRE/POST_INC/DEC(REG)). */
@@ -2231,6 +2234,9 @@ soft_df_operand (op, mode)
if (s_register_operand (op, mode))
return TRUE;
+ if (GET_CODE (op) == SUBREG)
+ op = SUBREG_REG (op);
+
switch (GET_CODE (op))
{
case CONST_DOUBLE: