expmed.c (store_bit_field): Adjust last change to not consider any word-sized field...
authorRichard Henderson <rth@cygnus.com>
Mon, 25 Sep 2000 07:07:33 +0000 (00:07 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 25 Sep 2000 07:07:33 +0000 (00:07 -0700)
        * expmed.c (store_bit_field): Adjust last change to not consider
        any word-sized field naturally aligned.

From-SVN: r36601

gcc/ChangeLog
gcc/expmed.c

index 0d8923e6bc90a1910cad7e812f664a91ed8d1022..ee077ab554a086612e7ed22a55a533841bef9498 100644 (file)
@@ -1,3 +1,8 @@
+2000-09-25  Richard Henderson  <rth@cygnus.com>
+
+       * expmed.c (store_bit_field): Adjust last change to not consider
+       any word-sized field naturally aligned.
+
 2000-09-24  Richard Henderson  <rth@cygnus.com>
 
        * config/alpha/alpha.c (alpha_emit_conditional_branch): Handle
index e2ca70a13abf27b30b242431d57605154d8d22ae..69761b9916572d1f1e0baf2868085421d283ce64 100644 (file)
@@ -305,12 +305,12 @@ store_bit_field (str_rtx, bitsize, bitnum, fieldmode, value, align, total_size)
      memory, any naturally sized, unit aligned field can be done directly.  */
      
   if (bitsize == GET_MODE_BITSIZE (fieldmode)
-      && (GET_MODE_SIZE (fieldmode) >= UNITS_PER_WORD
-         || GET_MODE_SIZE (GET_MODE (op0)) == GET_MODE_SIZE (fieldmode)
-         || (GET_CODE (op0) == MEM
-             && (! SLOW_UNALIGNED_ACCESS (fieldmode, align)
-                 || (offset * BITS_PER_UNIT % bitsize == 0
-                     && align % GET_MODE_BITSIZE (fieldmode) == 0))))
+      && (GET_CODE (op0) != MEM
+         ? (GET_MODE_SIZE (fieldmode) >= UNITS_PER_WORD
+            || GET_MODE_SIZE (GET_MODE (op0)) == GET_MODE_SIZE (fieldmode))
+         : (! SLOW_UNALIGNED_ACCESS (fieldmode, align)
+            || (offset * BITS_PER_UNIT % bitsize == 0
+                && align % GET_MODE_BITSIZE (fieldmode) == 0)))
       && (BYTES_BIG_ENDIAN ? bitpos + bitsize == unit : bitpos == 0))
     {
       if (GET_MODE (op0) != fieldmode)