diff options
author | Jeffrey A Law <law@cygnus.com> | 1998-01-01 12:55:19 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-01-01 05:55:19 -0700 |
commit | aa2ae67960340d03f93f8030a53fc6b7ae65dba5 (patch) | |
tree | 4c94ec9ba03228f14d55272aa91426ed89173a2e | |
parent | 9f1ff8e8ea908339ff7b3941adb53948c63e2c69 (diff) | |
download | gcc-aa2ae67960340d03f93f8030a53fc6b7ae65dba5.zip gcc-aa2ae67960340d03f93f8030a53fc6b7ae65dba5.tar.gz gcc-aa2ae67960340d03f93f8030a53fc6b7ae65dba5.tar.bz2 |
emit-rtl.c (operand_subword): Correctly handle extracting a word from a CONST_DOUBLE for 16bit targets with...
* emit-rtl.c (operand_subword): Correctly handle extracting a word
from a CONST_DOUBLE for 16bit targets with !WORDS_BIG_ENDIAN.
From-SVN: r17276
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c6a453b..4f0f0e8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Thu Jan 1 10:49:12 1998 Jeffrey A Law (law@cygnus.com) + * emit-rtl.c (operand_subword): Correctly handle extracting a word + from a CONST_DOUBLE for 16bit targets with !WORDS_BIG_ENDIAN. + * mn10200.md (tstxx, cmpxx): Use "nonimmediate_operand" as predicate for first argument. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index c93c3ea..7b114d6 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1208,7 +1208,7 @@ operand_subword (op, i, validate_address, mode) { long value; value = k[i >> 1]; - if ((i & 0x1) == 0) + if ((i & 0x1) == !WORDS_BIG_ENDIAN) value >>= 16; value &= 0xffff; return GEN_INT ((HOST_WIDE_INT) value); @@ -1265,6 +1265,13 @@ operand_subword (op, i, validate_address, mode) REAL_VALUE_FROM_CONST_DOUBLE (rv, op); REAL_VALUE_TO_TARGET_SINGLE (rv, l); + + if (BITS_PER_WORD == 16) + { + if ((i & 0x1) == !WORDS_BIG_ENDIAN) + l >>= 16; + l &= 0xffff; + } return GEN_INT ((HOST_WIDE_INT) l); } #else |