The EPILOGUE_BEG note is used by the dwarf2 stuff to trigger saving and restoring the CFA state around an epilogue that appears in the middle of the function. When the note is missing, the CFA state isn't saved and restored, which will then lead to a crash when a subsequent epilogue is encountered, as the CFA state doesn't match what's being unwound. Normally, reposition_prologue_epilogue_notes searches the blocks with direct edges to EXIT, in order to fixup note misplacement caused by scheduling. We do not search beyond the one basic block, because if there are multiple epilogues we could be moving the note from a different epilogue. When I rewrote r_p_e_n for epilogue unwind, I expected that the scheduler would not move the note farther than the beginning of the block actually containing the epilogue. That assumption was false for sched-ebb -- the epilogue note would get moved to the head of the ebb. It turns out there was existing (but unused) support for not moving a note "too far". This was for the old^3 eh implementation, and hadn't quite been removed. Well, that's handy, I'll just reuse the bits I need to keep the EPILOGUE_BEG note near the (original) first epilogue insn, at which point r_p_e_n can fix things up if epilogue insns get moved around. Tested on i386 and x86_64 linux. r~