Commit c6b3f1f2 by Jim Wilson

(make_extraction): Move BYTES_BIG_ENDIAN != BITS_BIG_ENDIAN offset

correction after the offset calculation.

From-SVN: r4315
parent 50e65854
...@@ -4881,12 +4881,6 @@ make_extraction (mode, inner, pos, pos_rtx, len, ...@@ -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. endian in both bits and bytes or little endian in bits and bytes.
If it is mixed, we must adjust. */ 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 /* If bytes are big endian and we had a paradoxical SUBREG, we must
adjust OFFSET to compensate. */ adjust OFFSET to compensate. */
#if BYTES_BIG_ENDIAN #if BYTES_BIG_ENDIAN
...@@ -4902,6 +4896,12 @@ make_extraction (mode, inner, pos, pos_rtx, len, ...@@ -4902,6 +4896,12 @@ make_extraction (mode, inner, pos, pos_rtx, len,
pos %= GET_MODE_BITSIZE (wanted_mem_mode); 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) if (offset != 0 || inner_mode != wanted_mem_mode)
{ {
rtx newmem = gen_rtx (MEM, wanted_mem_mode, rtx newmem = gen_rtx (MEM, wanted_mem_mode,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment