aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2004-07-15 21:18:10 +0000
committerMatthias Klose <doko@gcc.gnu.org>2004-07-15 21:18:10 +0000
commitbc2f7bb864e8e75db8114c76c36db761e0d65f7e (patch)
tree99e1d7df624d5b3524f1636139b24e76fafec23d
parent8abcb0f705f34e873fe2c2301f643af2b7f7f176 (diff)
downloadgcc-bc2f7bb864e8e75db8114c76c36db761e0d65f7e.zip
gcc-bc2f7bb864e8e75db8114c76c36db761e0d65f7e.tar.gz
gcc-bc2f7bb864e8e75db8114c76c36db761e0d65f7e.tar.bz2
m68k.c (output_move_qimode): Abort on an attempt to generate code which is generated by pushqi1 now
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/m68k/m68k.c22
-rw-r--r--gcc/config/m68k/m68k.h5
3 files changed, 8 insertions, 25 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0db81d0..f0eb71f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 8ad252f..174c3a6 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -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. */
diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index cb2ec13..bcfa68e 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -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.