re PR middle-end/55403 (ICE building libitm)
authorRichard Sandiford <rdsandiford@googlemail.com>
Tue, 20 Nov 2012 19:49:26 +0000 (19:49 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 20 Nov 2012 19:49:26 +0000 (19:49 +0000)
gcc/
PR middle-end/55403
PR middle-end/55391
* expmed.c (store_bit_field_1): Use adjust_bitfield_address_size
rather than adjust_bitfield_address to change the mode of a reference.
(extract_bit_field_1): Likewise.

From-SVN: r193674

gcc/ChangeLog
gcc/expmed.c

index 30a611274d3b5b0de31256a0e889055c90da0261..f9193fdebf241ef68bd533d69a5cad03f212928e 100644 (file)
@@ -1,3 +1,11 @@
+2012-11-20  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       PR middle-end/55403
+       PR middle-end/55391
+       * expmed.c (store_bit_field_1): Use adjust_bitfield_address_size
+       rather than adjust_bitfield_address to change the mode of a reference.
+       (extract_bit_field_1): Likewise.
+
 2012-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        * config/rs6000/rs6000.md (movdf_hardfloat32): Add a comment
index 752aecdaf17f9cc32cca297edf008001ed2ec089..11f15507247cbafde919acc9fe13ad1b08422e8e 100644 (file)
@@ -645,7 +645,7 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
     if (imode != GET_MODE (op0))
       {
        if (MEM_P (op0))
-         op0 = adjust_bitfield_address (op0, imode, 0);
+         op0 = adjust_bitfield_address_size (op0, imode, 0, MEM_SIZE (op0));
        else
          {
            gcc_assert (imode != BLKmode);
@@ -1380,7 +1380,7 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
     if (imode != GET_MODE (op0))
       {
        if (MEM_P (op0))
-         op0 = adjust_bitfield_address (op0, imode, 0);
+         op0 = adjust_bitfield_address_size (op0, imode, 0, MEM_SIZE (op0));
        else if (imode != BLKmode)
          {
            op0 = gen_lowpart (imode, op0);
@@ -1403,10 +1403,10 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
          }
        else
          {
-           rtx mem = assign_stack_temp (GET_MODE (op0),
-                                        GET_MODE_SIZE (GET_MODE (op0)));
+           HOST_WIDE_INT size = GET_MODE_SIZE (GET_MODE (op0));
+           rtx mem = assign_stack_temp (GET_MODE (op0), size);
            emit_move_insn (mem, op0);
-           op0 = adjust_bitfield_address (mem, BLKmode, 0);
+           op0 = adjust_bitfield_address_size (mem, BLKmode, 0, size);
          }
       }
   }