diff options
author | Andrew MacLeod <amacleod@cygnus.com> | 1998-09-21 14:23:16 +0000 |
---|---|---|
committer | Andrew Macleod <amacleod@gcc.gnu.org> | 1998-09-21 14:23:16 +0000 |
commit | 43566944af69a4299260b1dcc46b5d5147a6bf8b (patch) | |
tree | a43642efc30725d344df8510a724e7c0484f883b | |
parent | 7e8524dca9f8c5a7ad953de46f2d430febe98cb0 (diff) | |
download | gcc-43566944af69a4299260b1dcc46b5d5147a6bf8b.zip gcc-43566944af69a4299260b1dcc46b5d5147a6bf8b.tar.gz gcc-43566944af69a4299260b1dcc46b5d5147a6bf8b.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/except.c | 5 | ||||
-rw-r--r-- | gcc/expr.h | 1 | ||||
-rw-r--r-- | gcc/libgcc2.c | 6 | ||||
-rw-r--r-- | gcc/optabs.c | 2 |
5 files changed, 17 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 717a50c..a0ff2d7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/except.c b/gcc/except.c index 2ac0217..867b4a5 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, @@ -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 1e5947b..586aa2c 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 <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); } diff --git a/gcc/optabs.c b/gcc/optabs.c index 95c963e..2157f3f 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"); |