aboutsummaryrefslogtreecommitdiff
path: root/gcc/except.h
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-11-18 17:50:56 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-11-18 17:50:56 +0000
commit1e4ceb6f9ea4f1e0d5afccbf4a135f47b0110b79 (patch)
tree1e51c7da99a24a8b91dc684f56f9817dae2fb778 /gcc/except.h
parent0e6b2107ca04f7ea045bf9456a12178d2133fbfe (diff)
downloadgcc-1e4ceb6f9ea4f1e0d5afccbf4a135f47b0110b79.zip
gcc-1e4ceb6f9ea4f1e0d5afccbf4a135f47b0110b79.tar.gz
gcc-1e4ceb6f9ea4f1e0d5afccbf4a135f47b0110b79.tar.bz2
except.h (struct eh_entry): Add goto_entry_p.
* 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. From-SVN: r30576
Diffstat (limited to 'gcc/except.h')
-rw-r--r--gcc/except.h19
1 files changed, 6 insertions, 13 deletions
diff --git a/gcc/except.h b/gcc/except.h
index 07d4359..eafeaa9 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));