- int *region_index;
- handler_info ***handlers;
- int *num_handlers;
- int *outer_index;
- int region_count;
-} eh_nesting_info;
-
-/* Initialize the eh_nesting_info structure. */
-
-eh_nesting_info *init_eh_nesting_info PARAMS ((void));
-
-/* Get a list of handlers reachable from a an exception region/insn. */
-
-int reachable_handlers PARAMS ((int, eh_nesting_info *, rtx,
- handler_info ***handlers));
-
-/* Free the eh_nesting_info structure. */
-
-void free_eh_nesting_info PARAMS ((eh_nesting_info *));
-
-extern void init_eh PARAMS ((void));
-
-/* Initialization for the per-function EH data. */
-
-extern void init_eh_for_function PARAMS ((void));
-
-/* Generate an exception label. Use instead of gen_label_rtx */
-
-extern rtx gen_exception_label PARAMS ((void));
-
-/* Adds an EH table entry for EH entry number N. Called from
- final_scan_insn for NOTE_INSN_EH_REGION_BEG. */
-
-extern void add_eh_table_entry PARAMS ((int n));
-
-/* Start a catch clause, triggered by runtime value paramter. */
-
-#ifdef TREE_CODE
-extern void start_catch_handler PARAMS ((tree));
-#endif
-
-/* End an individual catch clause. */
-
-extern void end_catch_handler PARAMS ((void));
-
-/* Returns a non-zero value if we need to output an exception table. */
-
-extern int exception_table_p PARAMS ((void));
-
-/* Outputs the exception table if we have one. */
-
-extern void output_exception_table PARAMS ((void));
-
-/* Given a return address in ADDR, determine the address we should use
- to find the corresponding EH region. */
-
-extern rtx eh_outer_context PARAMS ((rtx addr));
-
-/* Called at the start of a block of try statements for which there is
- a supplied catch handler. */
-
-extern void expand_start_try_stmts PARAMS ((void));
-
-/* Called at the start of a block of catch statements. It terminates the
- previous set of try statements. */
-
-extern void expand_start_all_catch PARAMS ((void));
-
-/* Called at the end of a block of catch statements. */
-
-extern void expand_end_all_catch PARAMS ((void));
-
-/* Begin a region that will contain entries created with
- add_partial_entry. */
-
-extern void begin_protect_partials PARAMS ((void));
-
-#ifdef TREE_CODE
-/* Create a new exception region and add the handler for the region
- onto a list. These regions will be ended (and their handlers
- emitted) when end_protect_partials is invoked. */
-
-extern void add_partial_entry PARAMS ((tree handler));
-#endif
-
-/* End all of the pending exception regions that have handlers added with
- push_protect_entry (). */
-
-extern void end_protect_partials PARAMS ((void));
-
-/* An internal throw. */
-
-extern void expand_internal_throw PARAMS ((void));
-
-/* Called from expand_exception_blocks and expand_end_catch_block to
- expand and pending handlers. */
-
-extern void expand_leftover_cleanups PARAMS ((void));
-
-/* If necessary, emit insns to get EH context for the current
- function. */
-
-extern void emit_eh_context PARAMS ((void));
-
-/* Builds a list of handler labels and puts them in the global
- variable exception_handler_labels. */
-
-extern void find_exception_handler_labels PARAMS ((void));
-
-/* Determine if an arbitrary label is an exception label */
-
-extern int is_exception_handler_label PARAMS ((int));
-
-/* Performs sanity checking on the check_exception_handler_labels
- list. */
-
-extern void check_exception_handler_labels PARAMS ((void));
-
-/* Keeps track of the label used as the context of a throw to rethrow an
- exception to the outer exception region. */
-
-extern struct label_node *outer_context_label_stack;
-
-/* A list of labels used for exception handlers. It is created by
- find_exception_handler_labels for the optimization passes. */
-
-extern rtx exception_handler_labels;
-
-/* Return nonzero if nothing in this function can throw. */
-
-extern int nothrow_function_p PARAMS ((void));
-
-/* Performs optimizations for exception handling, such as removing
- unnecessary exception regions. Invoked from jump_optimize (). */
-
-extern void exception_optimize PARAMS ((void));
-
-/* Return EH context (and set it up once per fn). */
-extern rtx get_eh_context PARAMS ((void));
-
-/* Get the dynamic handler chain. */
-extern rtx get_dynamic_handler_chain PARAMS ((void));
-
-/* Get the dynamic cleanup chain. */
-extern rtx get_dynamic_cleanup_chain PARAMS ((void));
-
-/* Throw an exception. */
-
-extern void emit_throw PARAMS ((void));
-
-/* Save away the current ehqueue. */
-extern void push_ehqueue PARAMS ((void));
-
-/* Restore a previously pushed ehqueue. */
-extern void pop_ehqueue PARAMS ((void));
-
-/* One to use setjmp/longjmp method of generating code. */
-
-extern int exceptions_via_longjmp;
-
-/* One to enable asynchronous exception support. */
-
-extern int asynchronous_exceptions;
-
-/* One to protect cleanup actions with a handler that calls
- __terminate, zero otherwise. */
-
-extern int protect_cleanup_actions_with_terminate;
-
-#ifdef TREE_CODE
-extern tree protect_with_terminate PARAMS ((tree));
-#endif
-
-extern void expand_fixup_region_start PARAMS ((void));
-#ifdef TREE_CODE
-extern void expand_fixup_region_end PARAMS ((tree));
-#endif
-
-/* Various hooks for the DWARF 2 __throw routine. */
-
-void expand_builtin_unwind_init PARAMS ((void));
-rtx expand_builtin_dwarf_fp_regnum PARAMS ((void));
-#ifdef TREE_CODE
-rtx expand_builtin_frob_return_addr PARAMS ((tree));
-rtx expand_builtin_extract_return_addr PARAMS ((tree));
-void expand_builtin_init_dwarf_reg_sizes PARAMS ((tree));
-void expand_builtin_eh_return PARAMS ((tree, tree, tree));
-#endif
-void expand_eh_return PARAMS ((void));
-
-
-/* Checking whether 2 instructions are within the same exception region. */
-
-int in_same_eh_region PARAMS ((rtx, rtx));
-void free_insn_eh_region PARAMS ((void));
-void init_insn_eh_region PARAMS ((rtx, int));
-
-#ifdef rtx
-#undef rtx
-#endif