Commit 102701ff by Jim Wilson

(output_move_qimode): Add coldfire support.

From-SVN: r14105
parent 6d808a73
...@@ -1497,10 +1497,13 @@ output_move_qimode (operands) ...@@ -1497,10 +1497,13 @@ output_move_qimode (operands)
/* This is probably useless, since it loses for pushing a struct /* This is probably useless, since it loses for pushing a struct
of several bytes a byte at a time. */ of several bytes a byte at a time. */
/* 68k family always modifies the stack pointer by at least 2, even for
byte pushes. The 5200 (coldfire) does not do this. */
if (GET_CODE (operands[0]) == MEM if (GET_CODE (operands[0]) == MEM
&& GET_CODE (XEXP (operands[0], 0)) == PRE_DEC && GET_CODE (XEXP (operands[0], 0)) == PRE_DEC
&& XEXP (XEXP (operands[0], 0), 0) == stack_pointer_rtx && XEXP (XEXP (operands[0], 0), 0) == stack_pointer_rtx
&& ! ADDRESS_REG_P (operands[1])) && ! ADDRESS_REG_P (operands[1])
&& ! TARGET_5200)
{ {
xoperands[1] = operands[1]; xoperands[1] = operands[1];
xoperands[2] xoperands[2]
...@@ -1551,7 +1554,10 @@ output_move_qimode (operands) ...@@ -1551,7 +1554,10 @@ output_move_qimode (operands)
} }
if (GET_CODE (operands[1]) != CONST_INT && CONSTANT_P (operands[1])) if (GET_CODE (operands[1]) != CONST_INT && CONSTANT_P (operands[1]))
return "move%.l %1,%0"; return "move%.l %1,%0";
if (ADDRESS_REG_P (operands[0]) || ADDRESS_REG_P (operands[1])) /* 68k family doesn't support byte moves to from address registers. The
5200 (coldfire) does not have this restriction. */
if ((ADDRESS_REG_P (operands[0]) || ADDRESS_REG_P (operands[1]))
&& ! TARGET_5200)
return "move%.w %1,%0"; return "move%.w %1,%0";
return "move%.b %1,%0"; return "move%.b %1,%0";
} }
......
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