m68k.c (output_move_qimode): Abort on an attempt to generate code which is generated...
authorRoman Zippel <zippel@linux-m68k.org>
Thu, 15 Jul 2004 21:18:10 +0000 (21:18 +0000)
committerMatthias Klose <doko@gcc.gnu.org>
Thu, 15 Jul 2004 21:18:10 +0000 (21:18 +0000)
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.

From-SVN: r84780

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

index 0db81d0e9f8f2bf26a0b2dc46a31b6bd76b50d31..f0eb71fe793b213de36c50b3253369db557eeac9 100644 (file)
@@ -1,3 +1,9 @@
+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 
index 8ad252f91fa1806db833cc4ab4eb1429766771c7..174c3a6a33533a0215f8dd66617c2b5c023551c1 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 cb2ec13d97e370f933a4028d44f298dbd42dac3f..bcfa68ebd8e745a6277af5e84e5779d4b4f83719 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.