The rtl epilogues are inserted after the USE which indicates where the return value is. As a result, an instruction that calculates the return value cannot be placed in the delay slot of the return instruction. That is something that we did get right when we had non-rtl epilogues - the epilogue_delay could well contain an insn to calculate the function result.
-- Summary: rtl epilogues worse than non-rtl epilogues for dbr scheduling Product: gcc Version: 4.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: amylaar at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38267