summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authoramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-21 14:23:16 +0000
committeramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-21 14:23:16 +0000
commit485d67d3e950cec82e1ce9ad933825ca31698948 (patch)
treea43642efc30725d344df8510a724e7c0484f883b /gcc
parentce0665a7e5c6695915be9547df0779cc7e96d799 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/except.c5
-rw-r--r--gcc/expr.h1
-rw-r--r--gcc/libgcc2.c6
-rw-r--r--gcc/optabs.c2
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");