summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-28 22:54:22 +0000
committerdj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-28 22:54:22 +0000
commite88d558bdf8ed71b83c2be61bb2846a1388e7db2 (patch)
tree6e1c36cd7c7126bdaa8a3c2bd3158590076bfd11
parent08b7b6863245f404122e0397b6da36b170067fea (diff)
downloadppe42-gcc-e88d558bdf8ed71b83c2be61bb2846a1388e7db2.tar.gz
ppe42-gcc-e88d558bdf8ed71b83c2be61bb2846a1388e7db2.zip
* config/m68k/m68k.h (MOVE_BY_PIECES_P): Avoid pushing bytes,
since that doesn't work the way gcc wants on a generic m68k. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40138 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/m68k/m68k.h5
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b9cd1100ccf..a14925e4d09 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index c20cba1b99d..f12981e08bb 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -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
OpenPOWER on IntegriCloud