+Thu Sep 17 16:42:16 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
+
+ * except.c (start_catch_handler): Issue 'fatal' instead of 'error' and
+ re-align some code.
+ * libgcc2.c (__eh_rtime_match): fprintf a runtime error. Use <stdio.h>.
+
Thu Sep 17 12:24:33 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* regmove.c (copy_src_to_dest): Check that modes match.
void *ret;
/* No exception table implies the old style mechanism, so don't check. */
- if (exception_table != NULL &&
- exception_table->lang.language != EH_LANG_C_plus_plus)
+ if (exception_table != NULL
+ && exception_table->lang.language != EH_LANG_C_plus_plus)
return NULL;
if (match_info == CATCH_ALL_TYPE)
rtx call_rtx, rtime_address;
if (catchstack.top->entry->false_label != NULL_RTX)
- error ("never issued previous false_label");
+ fatal ("Compiler Bug: Never issued previous false_label");
catchstack.top->entry->false_label = gen_exception_label ();
rtime_address = expand_expr (rtime, NULL_RTX, Pmode, EXPAND_INITIALIZER);
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
+ (gen_rtx_SYMBOL_REF (Pmode, "__eh_rtime_match"), NULL_RTX,
+ 0, SImode, 1, rtime_address, Pmode);
/* Did the function return true? */
emit_cmp_insn (call_rtx, const0_rtx, EQ, NULL_RTX,
/* Include definitions of EH context and table layout */
#include "eh-common.h"
+#include <stdio.h>
/* This is a safeguard for dynamic handler chain. */
info = *(__get_eh_info ());
matcher = ((__eh_info *)info)->match_function;
- if (!matcher)
- perror ("No runtime type matcher available");
+#ifndef inhibit_libc
+ if (! matcher)
+ {
+ fprintf (stderr, "Internal Compiler Bug: No runtime type matcher.");
+ return 0;
+ }
+#endif
ret = (*matcher) (info, rtime, (void *)0);
- return ((int)ret);
+ return (ret != NULL);
}
/* This value identifies the place from which an exception is being