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> ...@@ -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) 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 * Makefile.in (pexecute.o): Use pexecute.c from libiberty. Provide
explicit rules for building. Similarly for alloca, vfprintf, explicit rules for building. Similarly for alloca, vfprintf,
choose-temp and mkstemp, getopt, getopt1, and obstack. choose-temp and mkstemp, getopt, getopt1, and obstack.
......
...@@ -1679,10 +1679,9 @@ output_move_qimode (operands) ...@@ -1679,10 +1679,9 @@ output_move_qimode (operands)
return "sub%.l %0,%0"; return "sub%.l %0,%0";
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";
/* 68k family doesn't support byte moves to from address registers. The /* 68k family (including the 5200 coldfire) does not support byte moves to
5200 (coldfire) does not have this restriction. */ from address registers. */
if ((ADDRESS_REG_P (operands[0]) || ADDRESS_REG_P (operands[1])) 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";
} }
......
...@@ -1023,8 +1023,8 @@ ...@@ -1023,8 +1023,8 @@
"* return output_move_qimode (operands);") "* return output_move_qimode (operands);")
(define_insn "" (define_insn ""
[(set (match_operand:QI 0 "general_operand" "=d*a<Q>,d*am") [(set (match_operand:QI 0 "general_operand" "=d<Q>,dm,d*a")
(match_operand:QI 1 "general_operand" "d*ami,d*a<Q>"))] (match_operand:QI 1 "general_operand" "dmi,d<Q>,di*a"))]
"TARGET_5200" "TARGET_5200"
"* return output_move_qimode (operands);") "* 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