Commit 2966b00e by Paul Brook Committed by Paul Brook

* config/arm/arm.c (arm_output_epilogue): Remove redundant code.

From-SVN: r82361
parent 3c7ad43e
2004-05-28 Paul Brook <paul@codesourcery.com> 2004-05-28 Paul Brook <paul@codesourcery.com>
* config/arm/arm.c (arm_output_epilogue): Remove redundant code.
2004-05-28 Paul Brook <paul@codesourcery.com>
* config/arm/arm.c (thumb_force_lr_save): New function. * config/arm/arm.c (thumb_force_lr_save): New function.
(arm_get_frame_offsets, thumb_unexpanded_epilogue, (arm_get_frame_offsets, thumb_unexpanded_epilogue,
thumb_output_function_prologue): Use it. thumb_output_function_prologue): Use it.
......
...@@ -9704,6 +9704,7 @@ arm_output_epilogue (rtx sibling) ...@@ -9704,6 +9704,7 @@ arm_output_epilogue (rtx sibling)
} }
} }
/* We may have already restored PC directly from the stack. */
if (! really_return if (! really_return
|| (ARM_FUNC_TYPE (func_type) == ARM_FT_NORMAL || (ARM_FUNC_TYPE (func_type) == ARM_FT_NORMAL
&& current_function_pretend_args_size == 0 && current_function_pretend_args_size == 0
...@@ -9714,8 +9715,6 @@ arm_output_epilogue (rtx sibling) ...@@ -9714,8 +9715,6 @@ arm_output_epilogue (rtx sibling)
switch ((int) ARM_FUNC_TYPE (func_type)) switch ((int) ARM_FUNC_TYPE (func_type))
{ {
case ARM_FT_EXCEPTION_HANDLER: case ARM_FT_EXCEPTION_HANDLER:
/* Even in 26-bit mode we do a mov (rather than a movs)
because we don't have the PSR bits set in the address. */
asm_fprintf (f, "\tmov\t%r, %r\n", PC_REGNUM, EXCEPTION_LR_REGNUM); asm_fprintf (f, "\tmov\t%r, %r\n", PC_REGNUM, EXCEPTION_LR_REGNUM);
break; break;
...@@ -9733,19 +9732,7 @@ arm_output_epilogue (rtx sibling) ...@@ -9733,19 +9732,7 @@ arm_output_epilogue (rtx sibling)
break; break;
default: default:
if (frame_pointer_needed) asm_fprintf (f, "\tmov\t%r, %r\n", PC_REGNUM, LR_REGNUM);
/* If we used the frame pointer then the return address
will have been loaded off the stack directly into the
PC, so there is no need to issue a MOV instruction
here. */
;
else if (current_function_pretend_args_size == 0
&& (saved_regs_mask & (1 << LR_REGNUM)))
/* Similarly we may have been able to load LR into the PC
even if we did not create a stack frame. */
;
else
asm_fprintf (f, "\tmov\t%r, %r\n", PC_REGNUM, LR_REGNUM);
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment