re PR middle-end/24950 (ICE in operand_subword_force)
authorAlan Modra <amodra@bigpond.net.au>
Tue, 22 Nov 2005 13:16:29 +0000 (13:16 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Tue, 22 Nov 2005 13:16:29 +0000 (23:46 +1030)
PR middle-end/24950
* expmed.c (store_bit_field): Don't attempt to insv a field
larger than the reg.

From-SVN: r107354

gcc/ChangeLog
gcc/expmed.c

index 5bc604e36cb6eb443dda6af274ffb67e8afcbfb1..c4ee188ca1aca777ca76e81e2350c97f44ee9acc 100644 (file)
@@ -1,3 +1,9 @@
+2005-11-22  Alan Modra  <amodra@bigpond.net.au>
+
+       PR middle-end/24950
+       * expmed.c (store_bit_field): Don't attempt to insv a field
+       larger than the reg.
+
 2005-11-22  Alan Modra  <amodra@bigpond.net.au>
 
        PR target/24954
index 58f179eacdc3b1fcba3025f6bb84b39be10c2994..d591b6bc7c2b72f542bab2f2ae31c7975e32e267 100644 (file)
@@ -643,6 +643,7 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
            bestmode = GET_MODE (op0);
 
          if (bestmode == VOIDmode
+             || GET_MODE_SIZE (bestmode) < GET_MODE_SIZE (fieldmode)
              || (SLOW_UNALIGNED_ACCESS (bestmode, MEM_ALIGN (op0))
                  && GET_MODE_BITSIZE (bestmode) > MEM_ALIGN (op0)))
            goto insv_loses;