re PR middle-end/37870 (ICE in extract_bit_field_1)
authorRichard Biener <rguenther@suse.de>
Mon, 18 Apr 2016 09:25:46 +0000 (09:25 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 18 Apr 2016 09:25:46 +0000 (09:25 +0000)
2016-04-18  Richard Biener  <rguenther@suse.de>

        PR middle-end/37870
* expmed.c (extract_bit_field_1): Remove broken case
using a wider MODE_INT mode.

From-SVN: r235103

gcc/ChangeLog
gcc/expmed.c

index ff99971783e1dbbe72c8a6ccc97abc2efc15a33b..d6b08614628e56ff7ce5c8972947fc1cb2b8c54a 100644 (file)
@@ -1,3 +1,9 @@
+2016-04-18  Richard Biener  <rguenther@suse.de>
+
+        PR middle-end/37870
+       * expmed.c (extract_bit_field_1): Remove broken case
+       using a wider MODE_INT mode.
+
 2016-04-18  Segher Boessenkool  <segher@kernel.crashing.org>
 
        * has-brig.c (lendian16): Don't try to use __builtin_bswap16
index 31d905bd3d5739f360ba7621c74c07037b846832..ec968da63336d94efb534cf274222ff51ddaaf09 100644 (file)
@@ -1647,17 +1647,6 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
            if (GET_CODE (op0) == SUBREG)
              op0 = force_reg (imode, op0);
          }
-       else if (REG_P (op0))
-         {
-           rtx reg, subreg;
-           imode = smallest_mode_for_size (GET_MODE_BITSIZE (GET_MODE (op0)),
-                                           MODE_INT);
-           reg = gen_reg_rtx (imode);
-           subreg = gen_lowpart_SUBREG (GET_MODE (op0), reg);
-           emit_move_insn (subreg, op0);
-           op0 = reg;
-           bitnum += SUBREG_BYTE (subreg) * BITS_PER_UNIT;
-         }
        else
          {
            HOST_WIDE_INT size = GET_MODE_SIZE (GET_MODE (op0));