Commit 43566944 by Andrew MacLeod Committed by Andrew Macleod

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
parent 7e8524dc
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
......
......@@ -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,
......
......@@ -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;
......
......@@ -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);
}
......
......@@ -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");
......
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