(subst): For subreg-of-constant, don't gen_lowpart
if it's a big-endian machine and constant is multi-word. From-SVN: r4554
This commit is contained in:
parent
87d11e4386
commit
19808e22ca
@ -3085,8 +3085,16 @@ subst (x, from, to, in_dest, unique_copy)
|
||||
return temp;
|
||||
}
|
||||
|
||||
/* If we want a subreg of a constant, at offset 0,
|
||||
take the low bits. On a little-endian machine, that's
|
||||
always valid. On a big-endian machine, it's valid
|
||||
only if the constant's mode fits in one word. */
|
||||
if (CONSTANT_P (SUBREG_REG (x)) && subreg_lowpart_p (x)
|
||||
&& GET_MODE_SIZE (mode) < GET_MODE_SIZE (op0_mode))
|
||||
&& GET_MODE_SIZE (mode) < GET_MODE_SIZE (op0_mode)
|
||||
#if WORDS_BIG_ENDIAN
|
||||
&& GET_MODE_BITSIZE (op0_mode) < BITS_PER_WORD
|
||||
#endif
|
||||
)
|
||||
return gen_lowpart_for_combine (mode, SUBREG_REG (x));
|
||||
|
||||
/* If we are narrowing the object, we need to see if we can simplify
|
||||
|
Loading…
Reference in New Issue
Block a user