diff options
author | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-21 14:23:16 +0000 |
---|---|---|
committer | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-21 14:23:16 +0000 |
commit | 485d67d3e950cec82e1ce9ad933825ca31698948 (patch) | |
tree | a43642efc30725d344df8510a724e7c0484f883b /gcc | |
parent | ce0665a7e5c6695915be9547df0779cc7e96d799 (diff) | |
download | gcc-485d67d3e950cec82e1ce9ad933825ca31698948.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22532 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-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 717a50c4837..a0ff2d78951 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 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 <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 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"); |