(make_extraction): Move BYTES_BIG_ENDIAN != BITS_BIG_ENDIAN offset
authorJim Wilson <wilson@gcc.gnu.org>
Tue, 4 May 1993 00:16:21 +0000 (17:16 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 4 May 1993 00:16:21 +0000 (17:16 -0700)
correction after the offset calculation.

From-SVN: r4315

gcc/combine.c

index ee9c56b02d54947bb3e4325d5edc8d291fc42db9..6293bbc376e5a5ea5b80611d0f1ef95da8e92657 100644 (file)
@@ -4881,12 +4881,6 @@ make_extraction (mode, inner, pos, pos_rtx, len,
         endian in both bits and bytes or little endian in bits and bytes.
         If it is mixed, we must adjust.  */
             
-#if BYTES_BIG_ENDIAN != BITS_BIG_ENDIAN
-      if (! spans_byte && is_mode != wanted_mem_mode)
-       offset = (GET_MODE_SIZE (is_mode)
-                 - GET_MODE_SIZE (wanted_mem_mode) - offset);
-#endif
-
       /* If bytes are big endian and we had a paradoxical SUBREG, we must
         adjust OFFSET to compensate. */
 #if BYTES_BIG_ENDIAN
@@ -4902,6 +4896,12 @@ make_extraction (mode, inner, pos, pos_rtx, len,
          pos %= GET_MODE_BITSIZE (wanted_mem_mode);
        }
 
+#if BYTES_BIG_ENDIAN != BITS_BIG_ENDIAN
+      if (! spans_byte && is_mode != wanted_mem_mode)
+       offset = (GET_MODE_SIZE (is_mode)
+                 - GET_MODE_SIZE (wanted_mem_mode) - offset);
+#endif
+
       if (offset != 0 || inner_mode != wanted_mem_mode)
        {
          rtx newmem = gen_rtx (MEM, wanted_mem_mode,