aboutsummaryrefslogtreecommitdiff
path: root/gcc/expmed.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-12-15 08:05:34 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1995-12-15 08:05:34 -0500
commit1d269b0cdc000f4b68dc195e4c60afabf680cd81 (patch)
tree3c51cb8658bcb4a92ba60f683b85fafee173660e /gcc/expmed.c
parent2afc5ce11853f2a269dd17e24b458779e9c41021 (diff)
downloadgcc-1d269b0cdc000f4b68dc195e4c60afabf680cd81.zip
gcc-1d269b0cdc000f4b68dc195e4c60afabf680cd81.tar.gz
gcc-1d269b0cdc000f4b68dc195e4c60afabf680cd81.tar.bz2
(store_bit_field): Don't use insv for BLKmode value.
(store_split_bit_field): Set total_bits to BITS_PER_FOR for BLKmode value. From-SVN: r10732
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r--gcc/expmed.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 4341b99..3c74e47 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -398,6 +398,7 @@ store_bit_field (str_rtx, bitsize, bitnum, fieldmode, value, align, total_size)
#ifdef HAVE_insv
if (HAVE_insv
+ && GET_MODE (value) != BLKmode
&& !(bitsize == 1 && GET_CODE (value) == CONST_INT)
/* Ensure insv's size is wide enough for this field. */
&& (GET_MODE_BITSIZE (insn_operand_mode[(int) CODE_FOR_insv][3])
@@ -776,7 +777,7 @@ store_split_bit_field (op0, bitsize, bitpos, value, align)
/* We must do an endian conversion exactly the same way as it is
done in extract_bit_field, so that the two calls to
extract_fixed_bit_field will have comparable arguments. */
- if (GET_CODE (value) != MEM)
+ if (GET_CODE (value) != MEM || GET_MODE (value) == BLKmode)
total_bits = BITS_PER_WORD;
else
total_bits = GET_MODE_BITSIZE (GET_MODE (value));