From 43566944af69a4299260b1dcc46b5d5147a6bf8b Mon Sep 17 00:00:00 2001 From: Andrew MacLeod Date: Mon, 21 Sep 1998 14:23:16 +0000 Subject: [PATCH] expr.h (eh_rtime_match_libfunc): New extern declaration. Mon Sep 21 17:15:26 EDT 1998 Andrew MacLeod * 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 if inhibit_libc is not defined. From-SVN: r22532 --- gcc/ChangeLog | 8 ++++++++ gcc/except.c | 5 ++--- gcc/expr.h | 1 + gcc/libgcc2.c | 6 ++++-- gcc/optabs.c | 2 ++ 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 717a50c4837..a0ff2d78951 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +Mon Sep 21 17:15:26 EDT 1998 Andrew MacLeod + + * 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 if inhibit_libc is not defined. + Mon Sep 21 14:10:51 1998 Jason Merrill * toplev.c (rest_of_compilation): Skip compiling anything with diff --git a/gcc/except.c b/gcc/except.c index 2ac0217e263..867b4a5bdf6 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -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, diff --git a/gcc/expr.h b/gcc/expr.h index 9e43741f26e..6d8d22a84d3 100644 --- a/gcc/expr.h +++ b/gcc/expr.h @@ -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; diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 1e5947bb5e3..586aa2c7a6d 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -3058,7 +3058,9 @@ __empty () /* Include definitions of EH context and table layout */ #include "eh-common.h" +#ifndef inhibit_libc #include +#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); } diff --git a/gcc/optabs.c b/gcc/optabs.c index 95c963ee040..2157f3f8784 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -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"); -- 2.30.2