m68k_output_function_epilogue uses leaf_function_p. Consider using (stack_pointer_delta == 0) instead. A quick experiment shows improvements like so:
- move.l -8(%fp),%d2 - move.l -4(%fp),%d3 + move.l (%sp)+,%d2 + move.l (%sp)+,%d3 unlk %fp rts Note that the move.l instruction without a displacement is shorter than the one with a displacement. -- Summary: Improve epilogue code in m68k Product: gcc Version: unknown Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kazu at gcc dot gnu dot org GCC target triplet: m68k-none-elf http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28881