From 84c1fa24b1cb78ca71c2f5a490f93f266073e9bc Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Sat, 27 Mar 2004 16:18:56 +0000 Subject: [PATCH] function.c (thread_prologue_and_epilogue): Move NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG notes before the epilogue. * function.c (thread_prologue_and_epilogue): Move NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG notes before the epilogue. From-SVN: r80025 --- gcc/ChangeLog | 6 ++++++ gcc/function.c | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e60ed81dbee..15a79c9319c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-03-27 Ulrich Weigand + + * function.c (thread_prologue_and_epilogue): Move + NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG notes + before the epilogue. + 2004-03-27 Ulrich Weigand * expr.c (store_constructor): Use gen_int_mode to correctly diff --git a/gcc/function.c b/gcc/function.c index 4236d156bb9..0972615d89f 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)); } } -- 2.30.2