diff options
author | Mike Stump <mrs@gcc.gnu.org> | 1997-05-15 02:25:25 +0000 |
---|---|---|
committer | Mike Stump <mrs@gcc.gnu.org> | 1997-05-15 02:25:25 +0000 |
commit | e5a1e0e86473186c8b9ab77d713f942abd7effd7 (patch) | |
tree | 6d9079c6f5bfe02819fc1ad57cd7e48bfb6e7410 /gcc/function.c | |
parent | 6b023d07003ec5b59ffc7ce36e0a25a59afee663 (diff) | |
download | gcc-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.c | 18 |
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. */ |