From 3879920c646985bca78fc35a716c600a640173b6 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 13 Apr 1997 15:15:21 -0400 Subject: [PATCH] (output_move_qimode): Optimize pushing one byte if the source operand does not use the stack pointer. From-SVN: r13891 --- gcc/config/m68k/m68k.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 59b931525e1..f0c171414ef 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -1508,7 +1508,17 @@ output_move_qimode (operands) 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. */ - output_asm_insn ("move%.b %1,%-\n\tmove%.b %@,%2", xoperands); + if (!reg_mentioned_p (stack_pointer_rtx, operands[1])) + { + xoperands[3] = stack_pointer_rtx; +#ifndef NO_ADDSUB_Q + output_asm_insn ("subq%.l %#2,%3\n\tmove%.b %1,%2", xoperands); +#else + output_asm_insn ("sub%.l %#2,%3\n\tmove%.b %1,%2", xoperands); +#endif + } + else + output_asm_insn ("move%.b %1,%-\n\tmove%.b %@,%2", xoperands); return ""; } -- 2.30.2