diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1993-05-03 17:16:21 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1993-05-03 17:16:21 -0700 |
commit | c6b3f1f25ff7623592b3bfac00a73030508febfd (patch) | |
tree | 660c520dac990a73659bb86275c7ca2829522bde | |
parent | 50e658546e5c22ddf703ef305282840fedb07d8f (diff) | |
download | gcc-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.c | 12 |
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, |