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:
Richard Henderson 2001-04-03 17:48:51 -07:00 committed by Richard Henderson
parent d02af17340
commit 9555a12236
4 changed files with 30 additions and 9 deletions

View File

@ -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.

View File

@ -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

View File

@ -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 ();

View File

@ -1982,7 +1982,8 @@ enum libcall_type
LCT_PURE = 2,
LCT_CONST_MAKE_BLOCK = 3,
LCT_PURE_MAKE_BLOCK = 4,
LCT_NORETURN = 5
LCT_NORETURN = 5,
LCT_THROW = 6
};
extern void emit_library_call PARAMS ((rtx, enum libcall_type,