aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorMike Stump <mrs@gcc.gnu.org>1997-05-15 02:25:25 +0000
committerMike Stump <mrs@gcc.gnu.org>1997-05-15 02:25:25 +0000
commite5a1e0e86473186c8b9ab77d713f942abd7effd7 (patch)
tree6d9079c6f5bfe02819fc1ad57cd7e48bfb6e7410 /gcc/function.c
parent6b023d07003ec5b59ffc7ce36e0a25a59afee663 (diff)
downloadgcc-e5a1e0e86473186c8b9ab77d713f942abd7effd7.zip
gcc-e5a1e0e86473186c8b9ab77d713f942abd7effd7.tar.gz
gcc-e5a1e0e86473186c8b9ab77d713f942abd7effd7.tar.bz2
function.c (expand_function_end): Make sure we finish off any leftover exception handlers.
* function.c (expand_function_end): Make sure we finish off any leftover exception handlers. From-SVN: r14067
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 571ac62f..b2468de 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -5572,6 +5572,24 @@ expand_function_end (filename, line, end_bindings)
if (end_bindings)
expand_end_bindings (0, 0, 0);
+ /* Now handle any leftover exception regions that may have been
+ created for the parameters. */
+ {
+ rtx last = get_last_insn ();
+ rtx label;
+
+ expand_leftover_cleanups ();
+
+ /* If the above emitted any code, may sure we jump around it. */
+ if (last != get_last_insn ())
+ {
+ label = gen_label_rtx ();
+ last = emit_jump_insn_after (gen_jump (label), last);
+ last = emit_barrier_after (last);
+ emit_label (label);
+ }
+ }
+
/* If we had calls to alloca, and this machine needs
an accurate stack pointer to exit the function,
insert some code to save and restore the stack pointer. */