From 713b2058151af2403186126a0e60cf80ed3425c4 Mon Sep 17 00:00:00 2001 From: Stephane Carrez Date: Sun, 30 Sep 2001 14:51:17 +0200 Subject: [PATCH] m68hc11.c (m68hc11_gen_movhi): Fix move of sp to tmp reg. * config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Fix move of sp to tmp reg. From-SVN: r45903 --- gcc/ChangeLog | 5 +++++ gcc/config/m68hc11/m68hc11.c | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 60822bdae13..9d4f389cc71 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-09-30 Stephane Carrez + + * config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Fix move of sp + to tmp reg. + 2001-09-30 Stephane Carrez * config/m68hc11/m68hc11.h(INCOMING_RETURN_ADDR_RTX): Remove so diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c index da45de0458a..494de470329 100644 --- a/gcc/config/m68hc11/m68hc11.c +++ b/gcc/config/m68hc11/m68hc11.c @@ -3299,7 +3299,17 @@ m68hc11_gen_movhi (insn, operands) if (ix_reg == 0) create_regs_rtx (); - if (reg_mentioned_p (ix_reg, operands[0])) + if (REG_P (operands[0]) && REGNO (operands[0]) == SOFT_TMP_REGNUM) + { + output_asm_insn ("pshx", operands); + output_asm_insn ("tsx", operands); + output_asm_insn ("inx", operands); + output_asm_insn ("inx", operands); + output_asm_insn ("stx\t%0", operands); + output_asm_insn ("pulx", operands); + } + + else if (reg_mentioned_p (ix_reg, operands[0])) { output_asm_insn ("sty\t%t0", operands); output_asm_insn ("tsy", operands);