]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Revert regression causing changes to store_bit_field_1.
authorDavid S. Miller <davem@davemloft.net>
Mon, 21 Nov 2011 21:50:41 +0000 (21:50 +0000)
committerDavid S. Miller <davem@gcc.gnu.org>
Mon, 21 Nov 2011 21:50:41 +0000 (13:50 -0800)
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

gcc/ChangeLog
gcc/expmed.c

index aea8611325b6dbfd615d8749842eb3c3a04fe973..854b00ec7d371e3a36219f17f3df487f617e45d8 100644 (file)
@@ -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
index ea42e9cd52a4327be3afc3e7d209f75a6c52adfc..b3e6d6d181600d409ff0463e7f9ae8b0a0e2534c 100644 (file)
@@ -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,