summaryrefslogtreecommitdiff
path: root/gcc/except.h
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>1999-12-12 18:32:36 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>1999-12-12 18:32:36 +0000
commitd3a0267fc2fdf1baffaf56a98ad824cd51a60cad (patch)
tree1e31e6a584113226ea69f8fdf57bada3aa50bfe1 /gcc/except.h
parent6ca8bddd01d7818bed2fd0b2502de5fae3147a3c (diff)
downloadgcc-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.h9
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;