From e57a3447f7117ade80869bbcfeb8f8abc3af346a Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Mon, 21 Nov 2011 21:50:41 +0000 Subject: [PATCH] Revert regression causing changes to store_bit_field_1. Revert 2011-11-16 Andreas Krebbel 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 --- gcc/ChangeLog | 10 ++++++++++ gcc/expmed.c | 13 ++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aea8611325b..854b00ec7d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2011-11-21 David S. Miller + + Revert + 2011-11-16 Andreas Krebbel + + 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. + 2011-11-21 Jakub Jelinek PR debug/50827 diff --git a/gcc/expmed.c b/gcc/expmed.c index ea42e9cd52a..b3e6d6d1816 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,