#ifndef GCC_VARRAY_H
struct varray_head_tag;
#define varray_type struct varray_head_tag *
#endif
struct function;
struct inline_remap;
struct eh_status;
struct eh_region;
extern int doing_eh PARAMS ((int));
extern void expand_eh_region_start PARAMS ((void));
extern void expand_eh_region_end_cleanup PARAMS ((tree));
extern void expand_start_all_catch PARAMS ((void));
extern void expand_start_catch PARAMS ((tree));
extern void expand_end_catch PARAMS ((void));
extern void expand_end_all_catch PARAMS ((void));
extern void expand_eh_region_end_allowed PARAMS ((tree, tree));
extern void expand_eh_region_end_must_not_throw PARAMS ((tree));
extern void expand_eh_region_end_throw PARAMS ((tree));
extern void expand_eh_region_end_fixup PARAMS ((tree));
extern void for_each_eh_label PARAMS ((void (*) (rtx)));
extern bool can_throw_internal PARAMS ((rtx));
extern bool can_throw_external PARAMS ((rtx));
extern void set_nothrow_function_flags PARAMS ((void));
extern void finish_eh_generation PARAMS ((void));
extern void init_eh PARAMS ((void));
extern void init_eh_for_function PARAMS ((void));
extern rtx reachable_handlers PARAMS ((rtx));
extern void maybe_remove_eh_handler PARAMS ((rtx));
extern void convert_from_eh_region_ranges PARAMS ((void));
extern void convert_to_eh_region_ranges PARAMS ((void));
extern void find_exception_handler_labels PARAMS ((void));
extern bool current_function_has_exception_handlers PARAMS ((void));
extern void output_function_exception_table PARAMS ((void));
extern void expand_builtin_unwind_init PARAMS ((void));
extern rtx expand_builtin_eh_return_data_regno PARAMS ((tree));
extern rtx expand_builtin_extract_return_addr PARAMS ((tree));
extern void expand_builtin_init_dwarf_reg_sizes PARAMS ((tree));
extern rtx expand_builtin_frob_return_addr PARAMS ((tree));
extern rtx expand_builtin_dwarf_fp_regnum PARAMS ((void));
extern void expand_builtin_eh_return PARAMS ((tree, tree));
extern void expand_eh_return PARAMS ((void));
extern rtx get_exception_pointer PARAMS ((struct function *));
extern int duplicate_eh_regions PARAMS ((struct function *,
struct inline_remap *));
extern void sjlj_emit_function_exit_after PARAMS ((rtx));
extern tree (*lang_protect_cleanup_actions) PARAMS ((void));
extern int (*lang_eh_type_covers) PARAMS ((tree a, tree b));
extern tree (*lang_eh_runtime_type) PARAMS ((tree));
#ifndef GCC_VARRAY_H
#undef varray_type
#endif
#if ! (defined (EH_RETURN_DATA_REGNO) \
&& (defined (IA64_UNWIND_INFO) \
|| (DWARF2_UNWIND_INFO \
&& defined (EH_RETURN_STACKADJ_RTX) \
&& (defined (EH_RETURN_HANDLER_RTX) \
|| defined (HAVE_eh_return)))))
#define MUST_USE_SJLJ_EXCEPTIONS 1
#else
#define MUST_USE_SJLJ_EXCEPTIONS 0
#endif
#ifdef CONFIG_SJLJ_EXCEPTIONS
# if CONFIG_SJLJ_EXCEPTIONS == 1
# define USING_SJLJ_EXCEPTIONS 1
# endif
# if CONFIG_SJLJ_EXCEPTIONS == 0
# define USING_SJLJ_EXCEPTIONS 0
# ifndef EH_RETURN_DATA_REGNO
#error "EH_RETURN_DATA_REGNO required"
# endif
# ifndef EH_RETURN_STACKADJ_RTX
#error "EH_RETURN_STACKADJ_RTX required"
# endif
# if !defined(EH_RETURN_HANDLER_RTX) && !defined(HAVE_eh_return)
#error "EH_RETURN_HANDLER_RTX or eh_return required"
# endif
# if !defined(DWARF2_UNWIND_INFO) && !defined(IA64_UNWIND_INFO)
#error "{DWARF2,IA64}_UNWIND_INFO required"
# endif
# endif
#else
# define USING_SJLJ_EXCEPTIONS MUST_USE_SJLJ_EXCEPTIONS
#endif