OSDN Git Service

* m68k.md (5200 movqi): Do not allow byte sized memory references
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 Sep 1998 13:50:48 +0000 (13:50 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 Sep 1998 13:50:48 +0000 (13:50 +0000)
        using address regs.
        * m68k.c (output_move_qimode): Do not use byte sized operations on
        address registers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22268 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/m68k/m68k.c
gcc/config/m68k/m68k.md

index 1b1fee7..912533d 100644 (file)
@@ -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.
index 07f7a01..cc3e3d7 100644 (file)
@@ -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";
 }
index 98672df..dfe0cbc 100644 (file)
   "* 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);")