summaryrefslogtreecommitdiff
path: root/gcc/except.h
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@cygnus.com>1998-09-15 11:20:52 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>1998-09-15 11:20:52 +0000
commitbf71cd2eaa2d7091cd02f429beeec279b6a5c52d (patch)
tree6b24980704695c7ec0f059391cfe4c686deb5c76 /gcc/except.h
parent8a21007c9409ad2be041c05c304295ff449538b7 (diff)
downloadgcc-bf71cd2eaa2d7091cd02f429beeec279b6a5c52d.tar.gz
[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/except.h')
-rw-r--r--gcc/except.h9
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));