diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-18 17:50:56 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-18 17:50:56 +0000 |
commit | 6c74b671c13aed61b18c87c8e1408e8a3238aa04 (patch) | |
tree | 1e51c7da99a24a8b91dc684f56f9817dae2fb778 /gcc/except.h | |
parent | e7de3fc9dbd0141196ed2ca4dd2c3011e657e60a (diff) | |
download | gcc-6c74b671c13aed61b18c87c8e1408e8a3238aa04.tar.gz |
* except.h (struct eh_entry): Add goto_entry_p.
(eh_region_from_symbol): Remove prototype.
* except.c (find_func_region_from_symbol): New function.
(emit_cleanup_handler): Likewise.
(eh_region_from_symbol): Make it static.
(add_new_handler): Verify the argument.
(find_func_region): Update comment.
(expand_eh_region_end): Expand handlers here, rater than waiting
until expand_leftover_cleanups or start_all_catch.
(expand_leftover_cleanups): Don't expand here.
(expand_start_all_catch): Or here.
(expand_rethrow): Check the return value from find_func_region.
* function.c (expand_function_end): Emit the catch_clauses.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30576 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.h')
-rw-r--r-- | gcc/except.h | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/gcc/except.h b/gcc/except.h index 07d4359a239..eafeaa942cd 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -62,6 +62,9 @@ struct eh_entry { int label_used; rtx false_label; rtx rethrow_label; + /* If non-zero, this entry is for a handler created when we left an + exception-region via goto. */ + unsigned goto_entry_p : 1; }; #else struct label_node; @@ -108,16 +111,10 @@ struct eh_status /* This stack is used to represent what the current eh region is for the catch blocks beings processed */ struct eh_stack x_catchstack; - /* A queue used for tracking which exception regions have closed but - whose handlers have not yet been expanded. Regions are emitted in - groups in an attempt to improve paging performance. - + /* A queue used for tracking which exception regions have closed. As we exit a region, we enqueue a new entry. The entries are then - dequeued during expand_leftover_cleanups and expand_start_all_catch, - - We should redo things so that we either take RTL for the handler, - or we expand the handler expressed as a tree immediately at region - end time. */ + dequeued during expand_leftover_cleanups and + expand_start_all_catch. */ struct eh_queue x_ehqueue; /* Insns for all of the exception handlers for the current function. They are currently emitted by the frontend code. */ @@ -271,10 +268,6 @@ int rethrow_used PROTO((int)); void update_rethrow_references PROTO((void)); -/* Return the region number a this is the rethrow label for. */ - -int eh_region_from_symbol PROTO((rtx)); - /* Get a pointer to the first handler in an exception region's list. */ struct handler_info *get_first_handler PROTO((int)); |