OSDN Git Service

2004-07-15 Roman Zippel <zippel@linux-m68k.org>
authordoko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Jul 2004 21:18:10 +0000 (21:18 +0000)
committerdoko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Jul 2004 21:18:10 +0000 (21:18 +0000)
        * config/m68k/m68k.c (output_move_qimode): Abort on an attempt to
        generate code which is generated by pushqi1 now
        * config/m68k/m68k.h (MOVE_BY_PIECES_P): Remove.

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

gcc/ChangeLog
gcc/config/m68k/m68k.c
gcc/config/m68k/m68k.h

index 0db81d0..f0eb71f 100644 (file)
@@ -1,5 +1,11 @@
 2004-07-15  Roman Zippel  <zippel@linux-m68k.org>
 
+       * config/m68k/m68k.c (output_move_qimode): Abort on an attempt to 
+       generate code which is generated by pushqi1 now
+       * config/m68k/m68k.h (MOVE_BY_PIECES_P): Remove.
+
+2004-07-15  Roman Zippel  <zippel@linux-m68k.org>
+
        * combine.c (simplify_set): match the mode of the constant 0 with 
        the tested operand to match the compare behaviour and the 
        simplify_relational_operation() expectation.
index 8ad252f..174c3a6 100644 (file)
@@ -1780,10 +1780,6 @@ output_move_himode (rtx *operands)
 const char *
 output_move_qimode (rtx *operands)
 {
-  rtx xoperands[4];
-
-  /* This is probably useless, since it loses for pushing a struct
-     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
@@ -1791,22 +1787,8 @@ output_move_qimode (rtx *operands)
       && XEXP (XEXP (operands[0], 0), 0) == stack_pointer_rtx
       && ! ADDRESS_REG_P (operands[1])
       && ! TARGET_COLDFIRE)
-    {
-      xoperands[1] = operands[1];
-      xoperands[2]
-       = gen_rtx_MEM (QImode,
-                      gen_rtx_PLUS (VOIDmode, stack_pointer_rtx, const1_rtx));
-      /* Just pushing a byte puts it in the high byte of the halfword. */
-      /* We must put it in the low-order, high-numbered byte.  */
-      if (!reg_mentioned_p (stack_pointer_rtx, operands[1]))
-       {
-         xoperands[3] = stack_pointer_rtx;
-         output_asm_insn ("subq%.l #2,%3\n\tmove%.b %1,%2", xoperands);
-       }
-      else
-       output_asm_insn ("move%.b %1,%-\n\tmove%.b %@,%2", xoperands);
-      return "";
-    }
+    /* generated by pushqi1 pattern now */
+    abort ();
 
   /* clr and st insns on 68000 read before writing.
      This isn't so on the 68010, but we have no TARGET_68010.  */
index cb2ec13..bcfa68e 100644 (file)
@@ -675,11 +675,6 @@ extern enum reg_class regno_reg_class[];
    On the ColdFire, sp@- in a byte insn pushes just a byte.  */
 #define PUSH_ROUNDING(BYTES) (TARGET_COLDFIRE ? BYTES : ((BYTES) + 1) & ~1)
 
-/* We want to avoid trying to push bytes.  */
-#define MOVE_BY_PIECES_P(SIZE, ALIGN) \
-  (move_by_pieces_ninsns (SIZE, ALIGN) < MOVE_RATIO \
-    && (((SIZE) >=16 && (ALIGN) >= 16) || (TARGET_COLDFIRE)))
-
 #define FIRST_PARM_OFFSET(FNDECL) 8
 
 /* On the 68000, the RTS insn cannot pop anything.