diff options
Diffstat (limited to 'gcc/except.h')
-rw-r--r-- | gcc/except.h | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/gcc/except.h b/gcc/except.h index 9f83a9948f8..c7f8c0ecbfe 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -20,6 +20,8 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ +#include "multi-target.h" + struct function; /* Per-function EH data. Used only in except.c, but GC and others @@ -27,21 +29,23 @@ struct function; struct eh_status; /* Internal structure describing a region. */ -struct eh_region; +struct eh_region_d; + +START_TARGET_SPECIFIC /* Test: is exception handling turned on? */ extern int doing_eh (int); /* Note that the current EH region (if any) may contain a throw, or a call to a function which itself may contain a throw. */ -extern void note_eh_region_may_contain_throw (struct eh_region *); +extern void note_eh_region_may_contain_throw (struct eh_region_d *); /* 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 (void (*) (rtx)); /* Invokes CALLBACK for every exception region in the current function. */ -extern void for_each_eh_region (void (*) (struct eh_region *)); +extern void for_each_eh_region (void (*) (struct eh_region_d *)); /* Determine if the given INSN can throw an exception. */ extern bool can_throw_internal_1 (int, bool); @@ -86,19 +90,19 @@ extern int duplicate_eh_regions (struct function *, duplicate_eh_regions_map, extern void sjlj_emit_function_exit_after (rtx); extern void default_init_unwind_resume_libfunc (void); -extern struct eh_region *gen_eh_region_cleanup (struct eh_region *, - struct eh_region *); -extern struct eh_region *gen_eh_region_try (struct eh_region *); -extern struct eh_region *gen_eh_region_catch (struct eh_region *, tree); -extern struct eh_region *gen_eh_region_allowed (struct eh_region *, tree); -extern struct eh_region *gen_eh_region_must_not_throw (struct eh_region *); -extern int get_eh_region_number (struct eh_region *); -extern bool get_eh_region_may_contain_throw (struct eh_region *); -extern tree get_eh_region_tree_label (struct eh_region *); -extern void set_eh_region_tree_label (struct eh_region *, tree); +extern struct eh_region_d *gen_eh_region_cleanup (struct eh_region_d *, + struct eh_region_d *); +extern struct eh_region_d *gen_eh_region_try (struct eh_region_d *); +extern struct eh_region_d *gen_eh_region_catch (struct eh_region_d *, tree); +extern struct eh_region_d *gen_eh_region_allowed (struct eh_region_d *, tree); +extern struct eh_region_d *gen_eh_region_must_not_throw (struct eh_region_d *); +extern int get_eh_region_number (struct eh_region_d *); +extern bool get_eh_region_may_contain_throw (struct eh_region_d *); +extern tree get_eh_region_tree_label (struct eh_region_d *); +extern void set_eh_region_tree_label (struct eh_region_d *, tree); extern void foreach_reachable_handler (int, bool, - void (*) (struct eh_region *, void *), + void (*) (struct eh_region_d *, void *), void *); extern void collect_eh_region_array (void); @@ -122,6 +126,7 @@ extern int (*lang_eh_type_covers) (tree a, tree b); /* Map a type to a runtime object to match type. */ extern tree (*lang_eh_runtime_type) (tree); +END_TARGET_SPECIFIC /* Just because the user configured --with-sjlj-exceptions=no doesn't mean that we can use call frame exceptions. Detect that the target @@ -172,5 +177,7 @@ struct throw_stmt_node GTY(()) int region_nr; }; +START_TARGET_SPECIFIC extern struct htab *get_eh_throw_stmt_table (struct function *); extern void set_eh_throw_stmt_table (struct function *, struct htab *); +END_TARGET_SPECIFIC |