aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/function.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e60ed81..15a79c9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2004-03-27 Ulrich Weigand <uweigand@de.ibm.com>
+ * 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 <uweigand@de.ibm.com>
+
* expr.c (store_constructor): Use gen_int_mode to correctly
sign-extend CONST_INT value.
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));
}
}