/* Exception Handling interface routines.
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
Contributed by Mike Stump <mrs@cygnus.com>.
02111-1307, USA. */
-#ifndef TREE_CODE
-union tree_node;
-#define tree union tree_node *
-#endif
-
-#ifndef RTX_CODE
-struct rtx_def;
-#define rtx struct rtx_def *
-#endif
-
#ifndef GCC_VARRAY_H
struct varray_head_tag;
#define varray_type struct varray_head_tag *
#endif
+struct function;
+
+struct inline_remap;
/* Per-function EH data. Used only in except.c, but GC and others
manipulate pointers to the opaque type. */
destroying an object twice. */
extern void expand_eh_region_end_fixup PARAMS ((tree));
-/* Begin a region that will contain entries created with
- add_partial_entry. */
-extern void begin_protect_partials PARAMS ((void));
-
-/* 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));
-
-/* End all of the pending exception regions that have handlers added with
- add_partial_entry. */
-extern void end_protect_partials PARAMS ((void));
-
-
-/* A list of labels used for exception handlers. */
-extern rtx exception_handler_labels;
+/* Invokes CALLBACK for every exception handler label. Only used by old
+ loop hackery; should not be used by new code. */
+extern void for_each_eh_label PARAMS ((void (*) (rtx)));
/* Determine if the given INSN can throw an exception. */
extern bool can_throw_internal 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_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 *));
-
-struct function;
-struct inline_remap;
-extern int duplicate_eh_regions PARAMS ((struct function *,
+extern int duplicate_eh_regions PARAMS ((struct function *,
struct inline_remap *));
extern void sjlj_emit_function_exit_after PARAMS ((rtx));
/* If non-NULL, this is a function that returns an expression to be
- executed if an unhandled exception is propogated out of a cleanup
+ executed if an unhandled exception is propagated out of a cleanup
region. For example, in C++, an exception thrown by a destructor
during stack unwinding is required to result in a call to
`std::terminate', so the C++ version of this function returns a
/* Map a type to a runtime object to match type. */
extern tree (*lang_eh_runtime_type) PARAMS ((tree));
-#ifndef TREE_CODE
-#undef tree
-#endif
-
-#ifndef RTX_CODE
-#undef rtx
-#endif
-
#ifndef GCC_VARRAY_H
#undef varray_type
#endif