From e9c6b69b61b17c1aff79fa933eeacae3c11e2eff Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Sat, 10 Apr 1999 13:12:10 +0000 Subject: [PATCH] Allow SUBREGs in place of REGs in soft_df_operand and di_operand From-SVN: r26336 --- gcc/ChangeLog | 5 +++++ gcc/config/arm/arm.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fc06842aadc..f50a947ede2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sat Apr 10 13:09:18 1999 Nick Clifton + + * 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 * extend.texi (Assembler Instructions with C Expression Operands): diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 52257bae6fd..d84efe7ce1c 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: