mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-19 23:19:40 +08:00
rtl.h (LCT_THROW): New.
* rtl.h (LCT_THROW): New. * calls.c (emit_library_call_value_1): Handle it. * except.c (connect_post_landing_pads): Use it. From-SVN: r41070
This commit is contained in:
parent
d02af17340
commit
9555a12236
@ -1,3 +1,9 @@
|
||||
2001-04-03 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* rtl.h (LCT_THROW): New.
|
||||
* calls.c (emit_library_call_value_1): Handle it.
|
||||
* except.c (connect_post_landing_pads): Use it.
|
||||
|
||||
2001-04-03 Zack Weinberg <zackw@stanford.edu>
|
||||
|
||||
* gansidecl.h: Delete file.
|
||||
|
28
gcc/calls.c
28
gcc/calls.c
@ -3521,15 +3521,29 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* No library functions can throw. */
|
||||
/* By default, library functions can not throw. */
|
||||
flags = ECF_NOTHROW;
|
||||
|
||||
if (fn_type == LCT_CONST_MAKE_BLOCK)
|
||||
flags |= ECF_CONST;
|
||||
else if (fn_type == LCT_PURE_MAKE_BLOCK)
|
||||
flags |= ECF_PURE;
|
||||
else if (fn_type == LCT_NORETURN)
|
||||
flags |= ECF_NORETURN;
|
||||
switch (fn_type)
|
||||
{
|
||||
case LCT_NORMAL:
|
||||
case LCT_CONST:
|
||||
case LCT_PURE:
|
||||
/* Nothing to do here. */
|
||||
break;
|
||||
case LCT_CONST_MAKE_BLOCK:
|
||||
flags |= ECF_CONST;
|
||||
break;
|
||||
case LCT_PURE_MAKE_BLOCK:
|
||||
flags |= ECF_PURE;
|
||||
break;
|
||||
case LCT_NORETURN:
|
||||
flags |= ECF_NORETURN;
|
||||
break;
|
||||
case LCT_THROW:
|
||||
flags = ECF_NORETURN;
|
||||
break;
|
||||
}
|
||||
fun = orgfun;
|
||||
|
||||
#ifdef PREFERRED_STACK_BOUNDARY
|
||||
|
@ -1818,7 +1818,7 @@ connect_post_landing_pads ()
|
||||
if (outer)
|
||||
emit_jump (outer->post_landing_pad);
|
||||
else
|
||||
emit_library_call (unwind_resume_libfunc, LCT_NORETURN,
|
||||
emit_library_call (unwind_resume_libfunc, LCT_THROW,
|
||||
VOIDmode, 1, cfun->eh->exc_ptr, Pmode);
|
||||
|
||||
seq = get_insns ();
|
||||
|
Loading…
Reference in New Issue
Block a user