Commit a3b75c07 by Richard Stallman

(eliminate_regs...

(eliminate_regs, case SUBREG): Leave the SUBREG when
the inner object is a pseudo on machines that extend byte
loads (to be consistent with reload.c).

From-SVN: r4304
parent 5b23f690
......@@ -2787,7 +2787,17 @@ eliminate_regs (x, mem_mode, insn)
{
if (GET_CODE (new) == MEM
&& (GET_MODE_SIZE (GET_MODE (x))
<= GET_MODE_SIZE (GET_MODE (new))))
<= GET_MODE_SIZE (GET_MODE (new)))
#if defined(BYTES_LOADS_ZERO_EXTEND) || defined(BYTE_LOADS_SIGN_EXTEND)
/* On these machines we will be reloading what is
inside the SUBREG if it originally was a pseudo and
the inner and outer modes are both a word or
smaller. So leave the SUBREG then. */
&& ! (GET_CODE (SUBREG_REG (x)) == REG
&& GET_MODE_SIZE (GET_MODE (x)) <= UNITS_PER_WORD
&& GET_MODE_SIZE (GET_MODE (new)) <= UNITS_PER_WORD)
#endif
)
{
int offset = SUBREG_WORD (x) * UNITS_PER_WORD;
enum machine_mode mode = GET_MODE (x);
......
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