From bc2f7bb864e8e75db8114c76c36db761e0d65f7e Mon Sep 17 00:00:00 2001 From: Roman Zippel Date: Thu, 15 Jul 2004 21:18:10 +0000 Subject: [PATCH] m68k.c (output_move_qimode): Abort on an attempt to generate code which is generated by pushqi1 now 2004-07-15 Roman Zippel * 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 | 6 ++++++ gcc/config/m68k/m68k.c | 22 ++-------------------- gcc/config/m68k/m68k.h | 5 ----- 3 files changed, 8 insertions(+), 25 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0db81d0e9f8..f0eb71fe793 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-07-15 Roman Zippel + + * 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 * combine.c (simplify_set): match the mode of the constant 0 with diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 8ad252f91fa..174c3a6a335 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 cb2ec13d97e..bcfa68ebd8e 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. -- 2.30.2