m68hc11.c (m68hc11_gen_movhi): Fix move of sp to tmp reg.
authorStephane Carrez <Stephane.Carrez@worldnet.fr>
Sun, 30 Sep 2001 12:51:17 +0000 (14:51 +0200)
committerStephane Carrez <ciceron@gcc.gnu.org>
Sun, 30 Sep 2001 12:51:17 +0000 (14:51 +0200)
* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Fix move of sp
to tmp reg.

From-SVN: r45903

gcc/ChangeLog
gcc/config/m68hc11/m68hc11.c

index 60822bd..9d4f389 100644 (file)
@@ -1,5 +1,10 @@
 2001-09-30  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
 
+       * config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Fix move of sp
+       to tmp reg.
+
+2001-09-30  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
+
        * config/m68hc11/m68hc11.h(INCOMING_RETURN_ADDR_RTX): Remove so
        that we use setjmp/longjmp exceptions.
 
index da45de0..494de47 100644 (file)
@@ -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);