diff options
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/function.c b/gcc/function.c index 4236d15..0972615 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -8014,11 +8014,16 @@ epilogue_done: /* Similarly, move any line notes that appear after the epilogue. There is no need, however, to be quite so anal about the existence - of such a note. */ + of such a note. Also move the NOTE_INSN_FUNCTION_END and (possibly) + NOTE_INSN_FUNCTION_BEG notes, as those can be relevant for debug + info generation. */ for (insn = epilogue_end; insn; insn = next) { next = NEXT_INSN (insn); - if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) > 0) + if (GET_CODE (insn) == NOTE + && (NOTE_LINE_NUMBER (insn) > 0 + || NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG + || NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_END)) reorder_insns (insn, insn, PREV_INSN (epilogue_end)); } } |