Commit 4db3bddc by Richard Kenner

(store_split_bit_field): Always adjust arg to extract_fixed_bit_field

in BYTES_BIG_ENDIAN case.

From-SVN: r8005
parent 56929fbd
...@@ -740,19 +740,12 @@ store_split_bit_field (op0, bitsize, bitpos, value, align) ...@@ -740,19 +740,12 @@ store_split_bit_field (op0, bitsize, bitpos, value, align)
>> (bitsize - bitsdone - thissize)) >> (bitsize - bitsdone - thissize))
& (((HOST_WIDE_INT) 1 << thissize) - 1)); & (((HOST_WIDE_INT) 1 << thissize) - 1));
else else
{ /* The args are chosen so that the last part includes the lsb.
/* The args are chosen so that the last part Give extract_bit_field the value it needs (with endianness
includes the lsb. */ compensation) to fetch the piece we want. */
int bit_offset = 0; part = extract_fixed_bit_field (word_mode, value, 0, thissize,
/* If the value isn't in memory, then it must be right aligned BITS_PER_WORD - bitsize + bitsdone,
if a register, so skip past the padding on the left. If it NULL_RTX, 1, align);
is in memory, then there is no padding on the left. */
if (GET_CODE (value) != MEM)
bit_offset = BITS_PER_WORD - bitsize;
part = extract_fixed_bit_field (word_mode, value, 0, thissize,
bit_offset + bitsdone,
NULL_RTX, 1, align);
}
#else #else
/* Fetch successively more significant portions. */ /* Fetch successively more significant portions. */
if (GET_CODE (value) == CONST_INT) if (GET_CODE (value) == CONST_INT)
......
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