diff options
author | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-15 11:20:52 +0000 |
---|---|---|
committer | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-15 11:20:52 +0000 |
commit | 15f6e7d9ced0911e8fc25314b408fe3f9c388f89 (patch) | |
tree | 6b24980704695c7ec0f059391cfe4c686deb5c76 /gcc/except.h | |
parent | 8d611e9cbc205d44411d5e274fb61966b3172362 (diff) | |
download | gcc-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/except.h')
-rw-r--r-- | gcc/except.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/except.h b/gcc/except.h index d20b6067cb0..5416e598760 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -53,6 +53,10 @@ struct label_node { label or not. New ones are needed for additional catch blocks if it has. + FALSE_LABEL is used when either setjmp/longjmp exceptions are in + use, or old style table exceptions. It contains the label for + branching to the next runtime type check as handlers are processed. + FINALIZATION is the tree codes for the handler, or is NULL_TREE if one hasn't been generated yet, or is integer_zero_node to mark the end of a group of try blocks. */ @@ -62,6 +66,7 @@ struct eh_entry { rtx exception_handler_label; tree finalization; int label_used; + rtx false_label; }; /* A list of EH_ENTRYs. ENTRY is the entry; CHAIN points to the next @@ -237,6 +242,10 @@ extern void add_eh_table_entry PROTO((int n)); extern void start_catch_handler PROTO((tree)); #endif +/* End an individual catch clause. */ + +extern void end_catch_handler PROTO((void)); + /* Returns a non-zero value if we need to output an exception table. */ extern int exception_table_p PROTO((void)); |