m68k.h (MOVE_BY_PIECES_P): Avoid pushing bytes, since that doesn't work the way gcc...
authorDJ Delorie <dj@redhat.com>
Wed, 28 Feb 2001 22:54:22 +0000 (17:54 -0500)
committerDJ Delorie <dj@gcc.gnu.org>
Wed, 28 Feb 2001 22:54:22 +0000 (17:54 -0500)
* config/m68k/m68k.h (MOVE_BY_PIECES_P): Avoid pushing bytes,
since that doesn't work the way gcc wants on a generic m68k.

From-SVN: r40138

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

index b9cd1100ccfe5245c97a6ea4a46513fb5b15e49b..a14925e4d095509052bd167661275c7965a504ea 100644 (file)
@@ -1,3 +1,8 @@
+2001-02-28  DJ Delorie  <dj@redhat.com>
+
+       * config/m68k/m68k.h (MOVE_BY_PIECES_P): Avoid pushing bytes,
+       since that doesn't work the way gcc wants on a generic m68k.
+
 2001-02-28  Richard Henderson  <rth@redhat.com>
 
        * caller-save.c (save_call_clobbered_regs): Fix typo in
index c20cba1b99d5621ec38f46b413c72df35fd30819..f12981e08bb22b1b793578e1552431d056af3cf5 100644 (file)
@@ -921,6 +921,11 @@ extern enum reg_class regno_reg_class[];
    On the 5200 (coldfire), sp@- in a byte insn pushes just a byte.  */
 #define PUSH_ROUNDING(BYTES) (TARGET_5200 ? 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_5200)))
+
 /* Offset of first parameter from the argument pointer register value.  */
 #define FIRST_PARM_OFFSET(FNDECL) 8