Commit 6e848450 by Richard Kenner

(reload_cse_regno_equal_p): Check for value using more than one

register on a big endian machine.

From-SVN: r14088
parent 2ae3dcac
...@@ -7980,6 +7980,14 @@ reload_cse_regno_equal_p (regno, val, mode) ...@@ -7980,6 +7980,14 @@ reload_cse_regno_equal_p (regno, val, mode)
&& (GET_CODE (val) != CONST_INT && (GET_CODE (val) != CONST_INT
|| mode == GET_MODE (x) || mode == GET_MODE (x)
|| (GET_MODE_SIZE (mode) < GET_MODE_SIZE (GET_MODE (x)) || (GET_MODE_SIZE (mode) < GET_MODE_SIZE (GET_MODE (x))
/* On a big endian machine if the value spans more than
one register then this register holds the high part of
it and we can't use it.
??? We should also compare with the high part of the
value. */
&& !(WORDS_BIG_ENDIAN
&& HARD_REGNO_NREGS (regno, GET_MODE (x)) > 1)
&& TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode), && TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode),
GET_MODE_BITSIZE (GET_MODE (x)))))) GET_MODE_BITSIZE (GET_MODE (x))))))
return 1; return 1;
......
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