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> Mon Sep 21 14:10:51 1998 Jason Merrill <jason@yorick.cygnus.com>
* toplev.c (rest_of_compilation): Skip compiling anything with * toplev.c (rest_of_compilation): Skip compiling anything with
......
...@@ -1629,9 +1629,8 @@ start_catch_handler (rtime) ...@@ -1629,9 +1629,8 @@ start_catch_handler (rtime)
rtime_address = force_reg (Pmode, rtime_address); rtime_address = force_reg (Pmode, rtime_address);
/* Now issue the call, and branch around handler if needed */ /* Now issue the call, and branch around handler if needed */
call_rtx = emit_library_call_value call_rtx = emit_library_call_value (eh_rtime_match_libfunc, NULL_RTX,
(gen_rtx_SYMBOL_REF (Pmode, "__eh_rtime_match"), NULL_RTX, 0, SImode, 1, rtime_address, Pmode);
0, SImode, 1, rtime_address, Pmode);
/* Did the function return true? */ /* Did the function return true? */
emit_cmp_insn (call_rtx, const0_rtx, EQ, NULL_RTX, emit_cmp_insn (call_rtx, const0_rtx, EQ, NULL_RTX,
......
...@@ -442,6 +442,7 @@ extern rtx sjpopnthrow_libfunc; ...@@ -442,6 +442,7 @@ extern rtx sjpopnthrow_libfunc;
extern rtx terminate_libfunc; extern rtx terminate_libfunc;
extern rtx setjmp_libfunc; extern rtx setjmp_libfunc;
extern rtx longjmp_libfunc; extern rtx longjmp_libfunc;
extern rtx eh_rtime_match_libfunc;
extern rtx eqhf2_libfunc; extern rtx eqhf2_libfunc;
extern rtx nehf2_libfunc; extern rtx nehf2_libfunc;
......
...@@ -3058,7 +3058,9 @@ __empty () ...@@ -3058,7 +3058,9 @@ __empty ()
/* Include definitions of EH context and table layout */ /* Include definitions of EH context and table layout */
#include "eh-common.h" #include "eh-common.h"
#ifndef inhibit_libc
#include <stdio.h> #include <stdio.h>
#endif
/* This is a safeguard for dynamic handler chain. */ /* This is a safeguard for dynamic handler chain. */
...@@ -3365,13 +3367,13 @@ __eh_rtime_match (void *rtime) ...@@ -3365,13 +3367,13 @@ __eh_rtime_match (void *rtime)
info = *(__get_eh_info ()); info = *(__get_eh_info ());
matcher = ((__eh_info *)info)->match_function; matcher = ((__eh_info *)info)->match_function;
#ifndef inhibit_libc
if (! matcher) if (! matcher)
{ {
#ifndef inhibit_libc
fprintf (stderr, "Internal Compiler Bug: No runtime type matcher."); fprintf (stderr, "Internal Compiler Bug: No runtime type matcher.");
#endif
return 0; return 0;
} }
#endif
ret = (*matcher) (info, rtime, (void *)0); ret = (*matcher) (info, rtime, (void *)0);
return (ret != NULL); return (ret != NULL);
} }
......
...@@ -124,6 +124,7 @@ rtx sjpopnthrow_libfunc; ...@@ -124,6 +124,7 @@ rtx sjpopnthrow_libfunc;
rtx terminate_libfunc; rtx terminate_libfunc;
rtx setjmp_libfunc; rtx setjmp_libfunc;
rtx longjmp_libfunc; rtx longjmp_libfunc;
rtx eh_rtime_match_libfunc;
rtx eqhf2_libfunc; rtx eqhf2_libfunc;
rtx nehf2_libfunc; rtx nehf2_libfunc;
...@@ -4296,6 +4297,7 @@ init_optabs () ...@@ -4296,6 +4297,7 @@ init_optabs ()
sjthrow_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__sjthrow"); sjthrow_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__sjthrow");
sjpopnthrow_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__sjpopnthrow"); sjpopnthrow_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__sjpopnthrow");
terminate_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__terminate"); 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 #ifndef DONT_USE_BUILTIN_SETJMP
setjmp_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__builtin_setjmp"); setjmp_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__builtin_setjmp");
longjmp_libfunc = gen_rtx_SYMBOL_REF (Pmode, "__builtin_longjmp"); 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