summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gnu/egcs/gcc/protector.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/gnu/egcs/gcc/protector.c b/gnu/egcs/gcc/protector.c
index ac4e780613c..47bfb8985e9 100644
--- a/gnu/egcs/gcc/protector.c
+++ b/gnu/egcs/gcc/protector.c
@@ -751,7 +751,7 @@ static void
rtl_epilogue (insn)
rtx insn;
{
- rtx if_false_label;
+ rtx if_false_label, end_label = 0;
rtx _val;
rtx funcname;
tree funcstr;
@@ -869,8 +869,19 @@ rtl_epilogue (insn)
emit_move_insn (current_function_return_rtx, return_reg);
emit_insn (gen_rtx_USE (VOIDmode, current_function_return_rtx));
}
+
+ end_label = gen_label_rtx ();
+ emit_jump (end_label);
}
+ /* Mark the end of the function body.
+ If control reaches this insn, the function can drop through
+ without returning a value. */
+ emit_note (NULL_PTR, NOTE_INSN_FUNCTION_END);
+
+ if (end_label)
+ emit_label (end_label);
+
#ifdef HAVE_return
if (HAVE_return && flag_have_return)
{