Commit 37834fc8 by Jeffrey A Law Committed by Jeff Law

m68k.md (5200 movqi): Do not allow byte sized memory references using address regs.

        * m68k.md (5200 movqi): Do not allow byte sized memory references
        using address regs.
        * m68k.c (output_move_qimode): Do not use byte sized operations on
        address registers.

From-SVN: r22268
parent 2325494c
......@@ -26,6 +26,11 @@ Sat Aug 29 13:32:58 1998 Mumit Khan <khan@xraylith.wisc.edu>
Sat Sep 5 03:23:05 1998 Jeffrey A Law (law@cygnus.com)
* m68k.md (5200 movqi): Do not allow byte sized memory references
using address regs.
* m68k.c (output_move_qimode): Do not use byte sized operations on
address registers.
* Makefile.in (pexecute.o): Use pexecute.c from libiberty. Provide
explicit rules for building. Similarly for alloca, vfprintf,
choose-temp and mkstemp, getopt, getopt1, and obstack.
......
......@@ -1679,10 +1679,9 @@ output_move_qimode (operands)
return "sub%.l %0,%0";
if (GET_CODE (operands[1]) != CONST_INT && CONSTANT_P (operands[1]))
return "move%.l %1,%0";
/* 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)
/* 68k family (including the 5200 coldfire) does not support byte moves to
from address registers. */
if (ADDRESS_REG_P (operands[0]) || ADDRESS_REG_P (operands[1]))
return "move%.w %1,%0";
return "move%.b %1,%0";
}
......
......@@ -1023,8 +1023,8 @@
"* return output_move_qimode (operands);")
(define_insn ""
[(set (match_operand:QI 0 "general_operand" "=d*a<Q>,d*am")
(match_operand:QI 1 "general_operand" "d*ami,d*a<Q>"))]
[(set (match_operand:QI 0 "general_operand" "=d<Q>,dm,d*a")
(match_operand:QI 1 "general_operand" "dmi,d<Q>,di*a"))]
"TARGET_5200"
"* return output_move_qimode (operands);")
......
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