Commit 05f5b2cd by Mike Stump

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
parent 15f3d16a
...@@ -1159,6 +1159,12 @@ expand_leftover_cleanups () ...@@ -1159,6 +1159,12 @@ expand_leftover_cleanups ()
/* Output the label for the start of the exception handler. */ /* Output the label for the start of the exception handler. */
emit_label (entry->exception_handler_label); 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. */ /* And now generate the insns for the handler. */
expand_expr (entry->finalization, const0_rtx, VOIDmode, 0); expand_expr (entry->finalization, const0_rtx, VOIDmode, 0);
...@@ -1252,6 +1258,12 @@ expand_start_all_catch () ...@@ -1252,6 +1258,12 @@ expand_start_all_catch ()
end up being the handler. */ end up being the handler. */
emit_label (entry->exception_handler_label); 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. */ /* When we get down to the matching entry for this try block, stop. */
if (entry->finalization == integer_zero_node) if (entry->finalization == integer_zero_node)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment