diff options
author | Mike Stump <mrs@gcc.gnu.org> | 1997-05-13 03:50:39 +0000 |
---|---|---|
committer | Mike Stump <mrs@gcc.gnu.org> | 1997-05-13 03:50:39 +0000 |
commit | 05f5b2cdf97d10cd4448a59c7d6c1b92416c8fcc (patch) | |
tree | f38cd2b10fa587e04c411b0236f8b2a865ea378b | |
parent | 15f3d16acb57c2ea3a9b86829ba51bde1c88c197 (diff) | |
download | gcc-05f5b2cdf97d10cd4448a59c7d6c1b92416c8fcc.zip gcc-05f5b2cdf97d10cd4448a59c7d6c1b92416c8fcc.tar.gz gcc-05f5b2cdf97d10cd4448a59c7d6c1b92416c8fcc.tar.bz2 |
except.c (expand_start_all_catch): If the machine needs a nonlocal_goto_receiver...
* except.c (expand_start_all_catch): If the machine needs a
nonlocal_goto_receiver, add one at the start of the exception
handler.
(expand_leftover_cleanups): Likewise.
Potential fix for eh on alpha, rs6000, and hppa.
From-SVN: r14060
-rw-r--r-- | gcc/except.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/except.c b/gcc/except.c index 91afbc3..225b656c 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -1159,6 +1159,12 @@ expand_leftover_cleanups () /* Output the label for the start of the exception handler. */ emit_label (entry->exception_handler_label); +#ifdef HAVE_nonlocal_goto_receiver + if (! exceptions_via_longjmp) + if (HAVE_nonlocal_goto_receiver) + emit_insn (gen_nonlocal_goto_receiver ()); +#endif + /* And now generate the insns for the handler. */ expand_expr (entry->finalization, const0_rtx, VOIDmode, 0); @@ -1252,6 +1258,12 @@ expand_start_all_catch () end up being the handler. */ emit_label (entry->exception_handler_label); +#ifdef HAVE_nonlocal_goto_receiver + if (! exceptions_via_longjmp) + if (HAVE_nonlocal_goto_receiver) + emit_insn (gen_nonlocal_goto_receiver ()); +#endif + /* When we get down to the matching entry for this try block, stop. */ if (entry->finalization == integer_zero_node) { |