diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-12-12 18:32:36 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-12-12 18:32:36 +0000 |
commit | d3a0267fc2fdf1baffaf56a98ad824cd51a60cad (patch) | |
tree | 1e31e6a584113226ea69f8fdf57bada3aa50bfe1 /gcc/except.h | |
parent | 6ca8bddd01d7818bed2fd0b2502de5fae3147a3c (diff) | |
download | gcc-d3a0267fc2fdf1baffaf56a98ad824cd51a60cad.tar.gz |
* except.h (struct eh_queue): Add `next' pointer.
(struct eh_status): Make x_ehqueue a pointer.
(push_ehqueue): Declare.
(pop_ehqueue): Likewise.
* except.c (expand_eh_region_end): Adjust now that ehqueue is a
pointer.
(expand_fixup_region_end): Likewise.
(expand_leftover_cleanups): Likewise.
(push_ehqueue): Define.
(pop_ehqueue): Likewise.
(emit_cleanup_handler): Use push_ehqueue and pop_ehqueue rather
than doing it inline.
(expand_start_all_catch): Adjust now that ehqueue is a
pointer.
(mark_eh_queue): Mark all level of the queue.
(mark_eh_status): Adjust now that ehqueue is a
pointer.
(init_eh_for_function): Allocate ehqueue.
(free_eh_status): Free it.
* stmt.c (expand_cleanups): Save the ehqueue around the cleanup
expansion for a fixup.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30874 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.h')
-rw-r--r-- | gcc/except.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/except.h b/gcc/except.h index 6f15ff04a09..befbccc94e6 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -93,6 +93,7 @@ struct eh_stack { struct eh_queue { struct eh_node *head; struct eh_node *tail; + struct eh_queue *next; }; /* Used to save exception handling status for each function. */ @@ -115,7 +116,7 @@ struct eh_status As we exit a region, we enqueue a new entry. The entries are then dequeued during expand_leftover_cleanups and expand_start_all_catch. */ - struct eh_queue x_ehqueue; + struct eh_queue *x_ehqueue; /* Insns for all of the exception handlers for the current function. They are currently emitted by the frontend code. */ rtx x_catch_clauses; @@ -443,6 +444,12 @@ extern rtx get_dynamic_cleanup_chain PROTO((void)); extern void emit_throw PROTO((void)); +/* Save away the current ehqueue. */ +extern void push_ehqueue PROTO((void)); + +/* Restore a previously pushed ehqueue. */ +extern void pop_ehqueue PROTO((void)); + /* One to use setjmp/longjmp method of generating code. */ extern int exceptions_via_longjmp; |