+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
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,
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;
/* 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. */
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);
}
rtx terminate_libfunc;
rtx setjmp_libfunc;
rtx longjmp_libfunc;
+rtx eh_rtime_match_libfunc;
rtx eqhf2_libfunc;
rtx nehf2_libfunc;
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");