aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-05-03 17:16:21 -0700
committerJim Wilson <wilson@gcc.gnu.org>1993-05-03 17:16:21 -0700
commitc6b3f1f25ff7623592b3bfac00a73030508febfd (patch)
tree660c520dac990a73659bb86275c7ca2829522bde
parent50e658546e5c22ddf703ef305282840fedb07d8f (diff)
downloadgcc-c6b3f1f25ff7623592b3bfac00a73030508febfd.zip
gcc-c6b3f1f25ff7623592b3bfac00a73030508febfd.tar.gz
gcc-c6b3f1f25ff7623592b3bfac00a73030508febfd.tar.bz2
(make_extraction): Move BYTES_BIG_ENDIAN != BITS_BIG_ENDIAN offset
correction after the offset calculation. From-SVN: r4315
-rw-r--r--gcc/combine.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index ee9c56b..6293bbc 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -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,