diff options
author | Roman Zippel <zippel@linux-m68k.org> | 2004-07-15 21:18:10 +0000 |
---|---|---|
committer | Matthias Klose <doko@gcc.gnu.org> | 2004-07-15 21:18:10 +0000 |
commit | bc2f7bb864e8e75db8114c76c36db761e0d65f7e (patch) | |
tree | 99e1d7df624d5b3524f1636139b24e76fafec23d | |
parent | 8abcb0f705f34e873fe2c2301f643af2b7f7f176 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 22 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.h | 5 |
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. |