function.c (expand_function_end): Emit a blockage insn before the epilogue when -fnon-call-exceptions is used.
2004-03-10 Andrew Haley <aph@redhat.com> * function.c (expand_function_end): Emit a blockage insn before the epilogue when -fnon-call-exceptions is used. * except.c (expand_start_all_catch): Make comment more accurate. From-SVN: r79265
This commit is contained in:
parent
65cd26a6f5
commit
ffad84cd85
@ -1,3 +1,10 @@
|
||||
2004-03-10 Andrew Haley <aph@redhat.com>
|
||||
|
||||
* function.c (expand_function_end): Emit a blockage insn before
|
||||
the epilogue when -fnon-call-exceptions is used.
|
||||
|
||||
* except.c (expand_start_all_catch): Make comment more accurate.
|
||||
|
||||
2004-03-08 Joel Sherrill <joel@oarcorp.com>
|
||||
|
||||
PR target/14480
|
||||
|
10
gcc/except.c
10
gcc/except.c
@ -602,10 +602,12 @@ expand_start_all_catch (void)
|
||||
emit_jump (region->u.try.continue_label);
|
||||
}
|
||||
|
||||
/* Begin a catch clause. TYPE is the type caught, a list of such types, or
|
||||
null if this is a catch-all clause. Providing a type list enables to
|
||||
associate the catch region with potentially several exception types, which
|
||||
is useful e.g. for Ada. */
|
||||
/* Begin a catch clause. TYPE is the type caught, a list of such
|
||||
types, (in the case of Java) an ADDR_EXPR which points to the
|
||||
runtime type to match, or null if this is a catch-all
|
||||
clause. Providing a type list enables to associate the catch region
|
||||
with potentially several exception types, which is useful e.g. for
|
||||
Ada. */
|
||||
|
||||
void
|
||||
expand_start_catch (tree type_or_list)
|
||||
|
@ -7016,6 +7016,14 @@ expand_function_end (void)
|
||||
clear_pending_stack_adjust ();
|
||||
do_pending_stack_adjust ();
|
||||
|
||||
/* @@@ This is a kludge. We want to ensure that instructions that
|
||||
may trap are not moved into the epilogue by scheduling, because
|
||||
we don't always emit unwind information for the epilogue.
|
||||
However, not all machine descriptions define a blockage insn, so
|
||||
emit an ASM_INPUT to act as one. */
|
||||
if (flag_non_call_exceptions)
|
||||
emit_insn (gen_rtx_ASM_INPUT (VOIDmode, ""));
|
||||
|
||||
/* Mark the end of the function body.
|
||||
If control reaches this insn, the function can drop through
|
||||
without returning a value. */
|
||||
|
Loading…
Reference in New Issue
Block a user