expr.h (eh_rtime_match_libfunc): New extern declaration.
authorAndrew MacLeod <amacleod@cygnus.com>
Mon, 21 Sep 1998 14:23:16 +0000 (14:23 +0000)
committerAndrew Macleod <amacleod@gcc.gnu.org>
Mon, 21 Sep 1998 14:23:16 +0000 (14:23 +0000)
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

gcc/ChangeLog
gcc/except.c
gcc/expr.h
gcc/libgcc2.c
gcc/optabs.c

index 717a50c48370e349411206da012d544e3b7fe8b5..a0ff2d789511777142f77ee4ea70b974132fb132 100644 (file)
@@ -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
index 2ac0217e26358f0512ba7d0cf256639b339ed33b..867b4a5bdf6af0504d3e0b04d5ad384e6412398e 100644 (file)
@@ -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,
index 9e43741f26ecc95b226311a520e1fcd079fabc06..6d8d22a84d3df229087d0a26355f2411b6300bd3 100644 (file)
@@ -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;
index 1e5947bb5e3c0fa0f6a4f1d302fe63b9b511a838..586aa2c7a6d92e5ba24fc51a5febc861f92bc056 100644 (file)
@@ -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);
 }
index 95c963ee040a9658d3a32d9f1c1fe9000c52fb88..2157f3f87847a50bb45986f4524c59aa9f5a343e 100644 (file)
@@ -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");