contrib/gcc-2.3.3/config/mips.c
/* Expand the epilogue into a bunch of separate insns.  */
Expand the epilogue into a bunch of separate insns.
Expand the epilogue into a bunch of separate insns .
void
mips_expand_epilogue ()
{
  long tsize = current_frame_info.total_size;
  rtx tsize_rtx = GEN_INT (tsize);
  rtx tmp_rtx = (rtx)0;
  if (tsize > 32767)
    {
      tmp_rtx = gen_rtx (REG, SImode, MIPS_TEMP1_REGNUM);
      emit_move_insn (tmp_rtx, tsize_rtx);
      tsize_rtx = tmp_rtx;
    }
  if (tsize > 0)
    {
      if (frame_pointer_needed)
	emit_insn (gen_movsi (stack_pointer_rtx, frame_pointer_rtx));
      save_restore_insns (FALSE, tmp_rtx, tsize, (FILE *)0);
      emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, tsize_rtx));
    }
  emit_jump_insn (gen_return_internal (gen_rtx (REG, Pmode, GP_REG_FIRST+31)));
}
void mips_expand_epilogue ( ) { long tsize = current_frame_info . total_size ; rtx tsize_rtx = GEN_INT ( tsize ) ; rtx tmp_rtx = ( rtx ) 0 ; if ( tsize > 32767 ) { tmp_rtx = gen_rtx ( REG , SImode , MIPS_TEMP1_REGNUM ) ; emit_move_insn ( tmp_rtx , tsize_rtx ) ; tsize_rtx = tmp_rtx ; } if ( tsize > 0 ) { if ( frame_pointer_needed ) emit_insn ( gen_movsi ( stack_pointer_rtx , frame_pointer_rtx ) ) ; save_restore_insns ( FALSE , tmp_rtx , tsize , ( FILE * ) 0 ) ; emit_insn ( gen_addsi3 ( stack_pointer_rtx , stack_pointer_rtx , tsize_rtx ) ) ; } emit_jump_insn ( gen_return_internal ( gen_rtx ( REG , Pmode , GP_REG_FIRST + 31 ) ) ) ; }
Expand the epilogue into a bunch of separate insns.
Expand the epilogue into a bunch of separate insns .