This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Revert regression causing changes to store_bit_field_1.
- From: David Miller <davem at davemloft dot net>
- To: gcc-patches at gcc dot gnu dot org
- Date: Mon, 21 Nov 2011 16:51:34 -0500 (EST)
- Subject: [PATCH] Revert regression causing changes to store_bit_field_1.
As discussed on gcc.
Committed to trunk.
gcc/
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.
---
gcc/ChangeLog | 10 ++++++++++
gcc/expmed.c | 15 +++------------
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index aea8611..854b00e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2011-11-21 David S. Miller <davem@davemloft.net>
+
+ 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.
+
2011-11-21 Jakub Jelinek <jakub@redhat.com>
PR debug/50827
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,
--
1.7.6.401.g6a319