diff options
author | David S. Miller <davem@davemloft.net> | 2011-11-21 21:50:41 +0000 |
---|---|---|
committer | David S. Miller <davem@gcc.gnu.org> | 2011-11-21 13:50:41 -0800 |
commit | e57a3447f7117ade80869bbcfeb8f8abc3af346a (patch) | |
tree | c625bcca76b7a6bc131656dcf4a473913df5f6d1 /gcc/expmed.c | |
parent | 7fefb1d1a9dcad78452aaace6202f44091befd71 (diff) | |
download | gcc-e57a3447f7117ade80869bbcfeb8f8abc3af346a.zip gcc-e57a3447f7117ade80869bbcfeb8f8abc3af346a.tar.gz gcc-e57a3447f7117ade80869bbcfeb8f8abc3af346a.tar.bz2 |
Revert regression causing changes to store_bit_field_1.
Revert
2011-11-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
PR middle-end/50325
* expmed.c (store_bit_field_1): Use extract_bit_field on big
endian targets if the source cannot be exactly covered by word
mode chunks.
From-SVN: r181598
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index ea42e9c..b3e6d6d 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -557,18 +557,9 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, 0) : (int) i * BITS_PER_WORD); rtx value_word = operand_subword_force (value, wordnum, fieldmode); - unsigned HOST_WIDE_INT new_bitsize = - MIN (BITS_PER_WORD, bitsize - i * BITS_PER_WORD); - - /* If the remaining chunk doesn't have full wordsize we have - to make sure that for big endian machines the higher order - bits are used. */ - if (new_bitsize < BITS_PER_WORD && BYTES_BIG_ENDIAN) - value_word = extract_bit_field (value_word, new_bitsize, 0, - true, false, NULL_RTX, - BLKmode, word_mode); - - if (!store_bit_field_1 (op0, new_bitsize, + + if (!store_bit_field_1 (op0, MIN (BITS_PER_WORD, + bitsize - i * BITS_PER_WORD), bitnum + bit_offset, bitregion_start, bitregion_end, word_mode, |