Commit 4a1f52a8 by Herman A.J. ten Brugge Committed by Michael Hayes

* c4x.c (c4x_r11_set_p): Calculate rtx code correctly.

From-SVN: r39207
parent c933c209
2001-01-24 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* c4x.c (c4x_r11_set_p): Calculate rtx code correctly.
2001-01-23 Chris Demetriou <cgd@sibyte.com> 2001-01-23 Chris Demetriou <cgd@sibyte.com>
Neil Booth <neil@daikokuya.demon.co.uk> Neil Booth <neil@daikokuya.demon.co.uk>
......
...@@ -3363,17 +3363,15 @@ src_operand (op, mode) ...@@ -3363,17 +3363,15 @@ src_operand (op, mode)
|| GET_CODE (op) == CONST) || GET_CODE (op) == CONST)
return 0; return 0;
/* If TARGET_EXPOSE_LDP is zero, allow direct memory access to /* If TARGET_LOAD_DIRECT_MEMS is non-zero, disallow direct memory
symbolic addresses. These will be rejected by access to symbolic addresses. These operands will get forced
GO_IF_LEGITIMATE_ADDRESS and fixed up by into a register and the movqi expander will generate a
LEGITIMIZE_RELOAD_ADDRESS. If TARGET_EXPOSE_LDP is nonzero, HIGH/LO_SUM pair if TARGET_EXPOSE_LDP is non-zero. */
disallow direct memory access to symbolic addresses. These
should be converted to a HIGH/LO_SUM pair by the movqi expander. */
if (GET_CODE (op) == MEM if (GET_CODE (op) == MEM
&& ((GET_CODE (XEXP (op, 0)) == SYMBOL_REF && ((GET_CODE (XEXP (op, 0)) == SYMBOL_REF
|| GET_CODE (XEXP (op, 0)) == LABEL_REF || GET_CODE (XEXP (op, 0)) == LABEL_REF
|| GET_CODE (XEXP (op, 0)) == CONST))) || GET_CODE (XEXP (op, 0)) == CONST)))
return ! TARGET_EXPOSE_LDP && GET_MODE (op) == mode; return ! TARGET_LOAD_DIRECT_MEMS && GET_MODE (op) == mode;
return general_operand (op, mode); return general_operand (op, mode);
} }
...@@ -4797,7 +4795,6 @@ static int ...@@ -4797,7 +4795,6 @@ static int
c4x_r11_set_p(x) c4x_r11_set_p(x)
rtx x; rtx x;
{ {
RTX_CODE code;
rtx set; rtx set;
int i, j; int i, j;
const char *fmt; const char *fmt;
...@@ -4805,18 +4802,17 @@ c4x_r11_set_p(x) ...@@ -4805,18 +4802,17 @@ c4x_r11_set_p(x)
if (x == 0) if (x == 0)
return 0; return 0;
code = GET_CODE (x); if (INSN_P (x) && GET_CODE (PATTERN (x)) == SEQUENCE)
if (code == INSN && GET_CODE (PATTERN (x)) == SEQUENCE)
x = XVECEXP (PATTERN (x), 0, XVECLEN (PATTERN (x), 0) - 1); x = XVECEXP (PATTERN (x), 0, XVECLEN (PATTERN (x), 0) - 1);
if (code == INSN && (set = single_set (x))) if (INSN_P (x) && (set = single_set (x)))
return c4x_r11_set_p (SET_DEST (set)); x = SET_DEST (set);
if (code == REG && REGNO (x) == R11_REGNO) if (GET_CODE (x) == REG && REGNO (x) == R11_REGNO)
return 1; return 1;
fmt = GET_RTX_FORMAT (GET_CODE (x)); fmt = GET_RTX_FORMAT (GET_CODE (x));
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) for (i = GET_RTX_LENGTH (GET_CODE (x)) - 1; i >= 0; i--)
{ {
if (fmt[i] == 'e') if (fmt[i] == 'e')
{ {
......
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