aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Stump <mrs@gcc.gnu.org>1997-05-13 03:50:39 +0000
committerMike Stump <mrs@gcc.gnu.org>1997-05-13 03:50:39 +0000
commit05f5b2cdf97d10cd4448a59c7d6c1b92416c8fcc (patch)
treef38cd2b10fa587e04c411b0236f8b2a865ea378b
parent15f3d16acb57c2ea3a9b86829ba51bde1c88c197 (diff)
downloadgcc-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.c12
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)
{