diff options
author | Andrew MacLeod <amacleod@cygnus.com> | 1998-09-15 11:20:52 +0000 |
---|---|---|
committer | Andrew Macleod <amacleod@gcc.gnu.org> | 1998-09-15 11:20:52 +0000 |
commit | bf71cd2eaa2d7091cd02f429beeec279b6a5c52d (patch) | |
tree | 6b24980704695c7ec0f059391cfe4c686deb5c76 /gcc/libgcc2.c | |
parent | 8a21007c9409ad2be041c05c304295ff449538b7 (diff) | |
download | gcc-bf71cd2eaa2d7091cd02f429beeec279b6a5c52d.zip gcc-bf71cd2eaa2d7091cd02f429beeec279b6a5c52d.tar.gz gcc-bf71cd2eaa2d7091cd02f429beeec279b6a5c52d.tar.bz2 |
[multiple changes]
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.
From-SVN: r22425
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r-- | gcc/libgcc2.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 7c26e6b..6f2fcfd 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. */ |