diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-10-12 06:31:07 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-10-12 06:31:07 -0400 |
commit | 83e9c679c039868eebe522bbb03cdf18eba90b34 (patch) | |
tree | dd41442db3b7b5e10606fc9bdade0dfe24591752 /gcc | |
parent | 780ed3aef39fd57a827906fb90a23db89f8480e7 (diff) | |
download | gcc-83e9c679c039868eebe522bbb03cdf18eba90b34.zip gcc-83e9c679c039868eebe522bbb03cdf18eba90b34.tar.gz gcc-83e9c679c039868eebe522bbb03cdf18eba90b34.tar.bz2 |
(gen_lowpart_common): Allow MODE_PARTIAL_INT where MODE_INT is
allowed.
From-SVN: r2407
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/emit-rtl.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index f13d0d7..7e94419 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -496,7 +496,8 @@ gen_lowpart_common (mode, x) / UNITS_PER_WORD); if ((GET_CODE (x) == ZERO_EXTEND || GET_CODE (x) == SIGN_EXTEND) - && GET_MODE_CLASS (mode) == MODE_INT) + && (GET_MODE_CLASS (mode) == MODE_INT + || GET_MODE_CLASS (mode) == MODE_PARTIAL_INT)) { /* If we are getting the low-order part of something that has been sign- or zero-extended, we can either just use the object being @@ -544,7 +545,9 @@ gen_lowpart_common (mode, x) /* If X is a CONST_INT or a CONST_DOUBLE, extract the appropriate bits from the low-order part of the constant. */ - else if (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE (x) == VOIDmode + else if ((GET_MODE_CLASS (mode) == MODE_INT + || GET_MODE_CLASS (mode) == MODE_PARTIAL_INT) + && GET_MODE (x) == VOIDmode && (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE)) { /* If MODE is twice the host word size, X is already the desired @@ -632,7 +635,8 @@ gen_lowpart_common (mode, x) else if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT && HOST_BITS_PER_WIDE_INT == BITS_PER_WORD) || flag_pretend_float) - && GET_MODE_CLASS (mode) == MODE_INT + && (GET_MODE_CLASS (mode) == MODE_INT + || GET_MODE_CLASS (mode) == MODE_PARTIAL_INT) && GET_CODE (x) == CONST_DOUBLE && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT && GET_MODE_BITSIZE (mode) == BITS_PER_WORD) @@ -646,7 +650,8 @@ gen_lowpart_common (mode, x) else if (((HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT && HOST_BITS_PER_WIDE_INT == BITS_PER_WORD) || flag_pretend_float) - && GET_MODE_CLASS (mode) == MODE_INT + && (GET_MODE_CLASS (mode) == MODE_INT + && GET_MODE_CLASS (mode) == MODE_PARTIAL_INT) && GET_CODE (x) == CONST_DOUBLE && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT && GET_MODE_BITSIZE (mode) == 2 * BITS_PER_WORD) |