This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: flow fixes
On Thu, Jan 13, 2000 at 06:51:17PM -0800, Richard Henderson wrote:
> That would be incorrect. You're papering around a problem elsewhere.
Indeed, the problem is that you've got a jump instruction
that isn't a JUMP_INSN.
Incidentally, you also put regno into the rtl instead of
a REG rtx. Tsk tsk.
r~
* fr30.c (fr30_expand_epilogue): Revert last change.
Use emit_jump_insn for the return insn.
Index: fr30.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/fr30/fr30.c,v
retrieving revision 1.3
diff -c -p -d -r1.3 fr30.c
*** fr30.c 2000/01/13 23:01:59 1.3
--- fr30.c 2000/01/14 03:02:45
*************** fr30_expand_epilogue ()
*** 377,386 ****
for (regno = 0; regno < STACK_POINTER_REGNUM; regno ++)
if (current_frame_info.gmask & (1 << regno))
! {
! emit_insn (gen_movsi_pop (gen_rtx_REG (Pmode, regno)));
! emit_insn (gen_rtx_USE (VOIDmode, regno));
! }
if (current_frame_info.pretend_size)
emit_insn (gen_add_to_stack (GEN_INT (current_frame_info.pretend_size)));
--- 377,383 ----
for (regno = 0; regno < STACK_POINTER_REGNUM; regno ++)
if (current_frame_info.gmask & (1 << regno))
! emit_insn (gen_movsi_pop (gen_rtx_REG (Pmode, regno)));
if (current_frame_info.pretend_size)
emit_insn (gen_add_to_stack (GEN_INT (current_frame_info.pretend_size)));
*************** fr30_expand_epilogue ()
*** 388,394 ****
/* Reset state info for each function. */
current_frame_info = zero_frame_info;
! emit_insn (gen_return_from_func ());
}
/* Do any needed setup for a variadic function. We must create a register
--- 385,391 ----
/* Reset state info for each function. */
current_frame_info = zero_frame_info;
! emit_jump_insn (gen_return_from_func ());
}
/* Do any needed setup for a variadic function. We must create a register