expr.h (eh_rtime_match_libfunc): New extern declaration.

Mon Sep 21 17:15:26 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
	* expr.h (eh_rtime_match_libfunc): New extern declaration.
	* optabs.c (init_optabs): Set eh_rtime_match_libfunc.
	* except.c (start_catch_handler): Use eh_rtime_match_libfunc.
	* libgcc2.c (__eh_rtime_match): Always return 0 if the matcher is
	NULL. Only include <stdio.h> if inhibit_libc is not defined.

From-SVN: r22532
This commit is contained in:
Andrew MacLeod 1998-09-21 14:23:16 +00:00 committed by Andrew Macleod
parent 7e8524dca9
commit 43566944af
5 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,11 @@
Mon Sep 21 17:15:26 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
* expr.h (eh_rtime_match_libfunc): New extern declaration.
* optabs.c (init_optabs): Set eh_rtime_match_libfunc.
* except.c (start_catch_handler): Use eh_rtime_match_libfunc.
* libgcc2.c (__eh_rtime_match): Always return 0 if the matcher is
NULL. Only include <stdio.h> if inhibit_libc is not defined.
Mon Sep 21 14:10:51 1998 Jason Merrill <jason@yorick.cygnus.com>
* toplev.c (rest_of_compilation): Skip compiling anything with

View File

@ -1629,9 +1629,8 @@ start_catch_handler (rtime)
rtime_address = force_reg (Pmode, rtime_address);
/* Now issue the call, and branch around handler if needed */
call_rtx = emit_library_call_value
(gen_rtx_SYMBOL_REF (Pmode, "__eh_rtime_match"), NULL_RTX,
0, SImode, 1, rtime_address, Pmode);
call_rtx = emit_library_call_value (eh_rtime_match_libfunc, NULL_RTX,
0, SImode, 1, rtime_address, Pmode);
/* Did the function return true? */
emit_cmp_insn (call_rtx, const0_rtx, EQ, NULL_RTX,

View File

@ -442,6 +442,7 @@ extern rtx sjpopnthrow_libfunc;
extern rtx terminate_libfunc;
extern rtx setjmp_libfunc;
extern rtx longjmp_libfunc;
extern rtx eh_rtime_match_libfunc;
extern rtx eqhf2_libfunc;
extern rtx nehf2_libfunc;

View File

@ -3058,7 +3058,9 @@ __empty ()
/* Include definitions of EH context and table layout */
#include "eh-common.h"
#ifndef inhibit_libc
#include <stdio.h>
#endif
/* This is a safeguard for dynamic handler chain. */
@ -3365,13 +3367,13 @@ __eh_rtime_match (void *rtime)
info = *(__get_eh_info ());
matcher = ((__eh_info *)info)->match_function;
#ifndef inhibit_libc
if (! matcher)
{
#ifndef inhibit_libc
fprintf (stderr, "Internal Compiler Bug: No runtime type matcher.");
#endif
return 0;
}
#endif
ret = (*matcher) (info, rtime, (void *)0);
return (ret != NULL);
}

View File

@ -124,6 +124,7 @@ rtx sjpopnthrow_libfunc;
rtx terminate_libfunc;
rtx setjmp_libfunc;
rtx longjmp_libfunc;
rtx eh_rtime_match_libfunc;
rtx eqhf2_libfunc;
rtx nehf2_libfunc;
@ -4296,6 +4297,7 @@ init_optabs ()
sjthrow_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__sjthrow");
sjpopnthrow_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__sjpopnthrow");
terminate_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__terminate");
eh_rtime_match_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__eh_rtime_match");
#ifndef DONT_USE_BUILTIN_SETJMP
setjmp_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__builtin_setjmp");
longjmp_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__builtin_longjmp");