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