summaryrefslogtreecommitdiff
path: root/gcc/libgcc2.c
diff options
context:
space:
mode:
authoramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-15 11:20:52 +0000
committeramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-15 11:20:52 +0000
commit15f6e7d9ced0911e8fc25314b408fe3f9c388f89 (patch)
tree6b24980704695c7ec0f059391cfe4c686deb5c76 /gcc/libgcc2.c
parent8d611e9cbc205d44411d5e274fb61966b3172362 (diff)
downloadgcc-15f6e7d9ced0911e8fc25314b408fe3f9c388f89.tar.gz
Tue Sep 15 14:10:54 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
* except.h (struct eh_entry): Add false_label field. (end_catch_handler): Add prototype. * except.c (push_eh_entry): Set false_label field to NULL_RTX. (start_catch_handler): When using old style exceptions, issue runtime typematch code before continuing with the handler. (end_catch_handler): New function, generates label after handler if needed by older style exceptions. (expand_start_all_catch): No need to check for new style exceptions. (output_exception_table_entry): Only output the first handler label for old style exceptions. * libgcc2.c (__eh_rtime_match): New routine to lump runtime matching mechanism into one function, if a runtime matcher is provided. 1998-09-15 Andrew MacLeod <amacleod@cygnus.com> * cp/except.c (expand_start_catch_block): No need to check for new exception model. (process_start_catch_block_old): Deleted. (process_start_catch_block): Add call to start_decl_1(). (expand_end_catch_block): Add call to end_catch_handler(). * cp/exception.cc (__cplus_type_matcher): Only check the exception language if there is an exception table. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22425 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r--gcc/libgcc2.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c
index 7c26e6bc946..6f2fcfd9796 100644
--- a/gcc/libgcc2.c
+++ b/gcc/libgcc2.c
@@ -3355,6 +3355,21 @@ __sjpopnthrow ()
/* Support code for all exception region-based exception handling. */
+int
+__eh_rtime_match (void *rtime)
+{
+ void *info;
+ __eh_matcher matcher;
+ void *ret;
+
+ info = *(__get_eh_info ());
+ matcher = ((__eh_info *)info)->match_function;
+ if (!matcher)
+ perror ("No runtime type matcher available");
+ ret = (*matcher) (info, rtime, (void *)0);
+ return ((int)ret);
+}
+
/* This value identifies the place from which an exception is being
thrown. */