* expmed.c (store_bit_field): Adjust last change to not consider
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 25 Sep 2000 07:07:33 +0000 (07:07 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 25 Sep 2000 07:07:33 +0000 (07:07 +0000)
        any word-sized field naturally aligned.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36601 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/expmed.c

index 0d8923e..ee077ab 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 e2ca70a..69761b9 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)