-#if !defined(NULL_RTX) && !defined(rtx)
-typedef struct rtx_def *_except_rtx;
-#define rtx _except_rtx
-#endif
-
-#ifdef TREE_CODE
-
-/* A stack of labels. CHAIN points to the next entry in the stack. */
-
-struct label_node {
- union {
- rtx rlabel;
- tree tlabel;
- } u;
- struct label_node *chain;
-};
-
-/* An eh_entry is used to describe one exception handling region.
-
- OUTER_CONTEXT is the label used for rethrowing into the outer context.
-
- EXCEPTION_HANDLER_LABEL is the label corresponding to the handler
- for this region.
-
- LABEL_USED indicates whether a CATCH block has already used this
- label or not. New ones are needed for additional catch blocks if
- it has.
-
- 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. */
-
-struct eh_entry {
- rtx outer_context;
- rtx exception_handler_label;
- tree finalization;
- int label_used;
-};
-
-/* A list of EH_ENTRYs. ENTRY is the entry; CHAIN points to the next
- entry in the list, or is NULL if this is the last entry. */
-
-struct eh_node {
- struct eh_entry *entry;
- struct eh_node *chain;
-};
-
-/* A stack of EH_ENTRYs. TOP is the topmost entry on the stack. TOP is
- NULL if the stack is empty. */
-
-struct eh_stack {
- struct eh_node *top;
-};
-
-/* A queue of EH_ENTRYs. HEAD is the front of the queue; TAIL is the
- end (the latest entry). HEAD and TAIL are NULL if the queue is
- empty. */
-
-struct eh_queue {
- struct eh_node *head;
- struct eh_node *tail;
-};
-
-
-/* Start an exception handling region. All instructions emitted after
- this point are considered to be part of the region until
- expand_eh_region_end () is invoked. */
-
-extern void expand_eh_region_start PROTO((void));
-
-/* Just like expand_eh_region_start, except if a cleanup action is
- entered on the cleanup chain, the TREE_PURPOSE of the element put
- on the chain is DECL. DECL should be the associated VAR_DECL, if
- any, otherwise it should be NULL_TREE. */
-
-extern void expand_eh_region_start_for_decl PROTO((tree));
-
-/* Start an exception handling region for the given cleanup action.
- All instructions emitted after this point are considered to be part
- of the region until expand_eh_region_end () is invoked. CLEANUP is
- the cleanup action to perform. The return value is true if the
- exception region was optimized away. If that case,
- expand_eh_region_end does not need to be called for this cleanup,
- nor should it be.
-
- This routine notices one particular common case in C++ code
- generation, and optimizes it so as to not need the exception
- region. */
-
-extern int expand_eh_region_start_tree PROTO((tree, tree));
-
-/* End an exception handling region. The information about the region
- is found on the top of ehstack.
-
- HANDLER is either the cleanup for the exception region, or if we're
- marking the end of a try block, HANDLER is integer_zero_node.
-
- HANDLER will be transformed to rtl when expand_leftover_cleanups ()
- is invoked. */
-
-extern void expand_eh_region_end PROTO((tree));
-
-/* Push RLABEL or TLABEL onto LABELSTACK. Only one of RLABEL or TLABEL
- should be set; the other must be NULL. */
-
-extern void push_label_entry PROTO((struct label_node **labelstack, rtx rlabel, tree tlabel));
-
-/* Pop the topmost entry from LABELSTACK and return its value as an
- rtx node. If LABELSTACK is empty, return NULL. */
-
-extern rtx pop_label_entry PROTO((struct label_node **labelstack));
-
-/* Return the topmost entry of LABELSTACK as a tree node, or return
- NULL_TREE if LABELSTACK is empty. */
-
-extern tree top_label_entry PROTO((struct label_node **labelstack));
-
-/* A set of insns for the catch clauses in the current function. They
- will be emitted at the end of the current function. */
-
-extern rtx catch_clauses;