h8300.md (insv): Force source operand to be a register.
authorDJ Delorie <dj@redhat.com>
Wed, 20 Feb 2008 21:31:56 +0000 (16:31 -0500)
committerDJ Delorie <dj@gcc.gnu.org>
Wed, 20 Feb 2008 21:31:56 +0000 (16:31 -0500)
* config/h8300/h8300.md (insv): Force source operand to be a register.
* config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
as a jump, not as a plain insn.

From-SVN: r132498

gcc/ChangeLog
gcc/config/h8300/h8300.c
gcc/config/h8300/h8300.md

index d17b56c7b61ca08a99d58614c259a8cb36c183d7..fc400d26ae5ec6ab89dd63822192d70233408210 100644 (file)
@@ -1,3 +1,10 @@
+2008-02-20  DJ Delorie  <dj@redhat.com>
+
+       * config/h8300/h8300.md (insv): Force source operand to be a register.
+
+       * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
+       as a jump, not as a plain insn.
+       
 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
 
        * doc/invoke.texi (Warning Options): Add new option
index 96b6311ce7cb34414bd99ca3f81e59ea23ff9c17..f90bd414735c91d5b46c9add79c0eff7fe7cfbfb 100644 (file)
@@ -930,7 +930,7 @@ h8300_expand_epilogue (void)
     }
 
   if (!returned_p)
-    emit_insn (gen_rtx_RETURN (VOIDmode));
+    emit_jump_insn (gen_rtx_RETURN (VOIDmode));
 }
 
 /* Return nonzero if the current function is an interrupt
index 08a8d2e93139417fc9f4dde15c5b0df06b33a441..9b6c0aa4e16ebc44ed88ba4062168e41e80f3809 100644 (file)
   if (GET_CODE (operands[0]) == MEM
       || GET_CODE (operands[3]) == MEM)
     FAIL;
+
+  if (GET_CODE (operands[3]) != REG)
+    operands[3] = force_reg (HImode, operands[3]);
 }")
 
 (define_insn ""