X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fexcept.h;h=9188c3bb60fa75644df4226f36be01c3e2d57568;hb=0765d519a1f34f7490054a889d2cb2a25889fab1;hp=3127d5de08aee27c75c3dd4173aed299710c74e5;hpb=a81cad995911db68ccf3e4234328774dbc090155;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/except.h b/gcc/except.h index 3127d5de08a..9188c3bb60f 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -1,5 +1,5 @@ /* Exception Handling interface routines. - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Mike Stump . @@ -46,9 +46,9 @@ extern void for_each_eh_label (void (*) (rtx)); extern void for_each_eh_region (void (*) (struct eh_region *)); /* Determine if the given INSN can throw an exception. */ -extern bool can_throw_internal_1 (int); +extern bool can_throw_internal_1 (int, bool); extern bool can_throw_internal (rtx); -extern bool can_throw_external_1 (int); +extern bool can_throw_external_1 (int, bool); extern bool can_throw_external (rtx); /* Set TREE_NOTHROW and cfun->all_throwers_are_sibcalls. */ @@ -81,6 +81,8 @@ extern void expand_eh_return (void); extern rtx expand_builtin_extend_pointer (tree); extern rtx get_exception_pointer (struct function *); extern rtx get_exception_filter (struct function *); +typedef tree (*duplicate_eh_regions_map) (tree, void *); +extern int duplicate_eh_regions (struct function *, duplicate_eh_regions_map, void *, int); extern void sjlj_emit_function_exit_after (rtx); @@ -101,9 +103,15 @@ extern void foreach_reachable_handler (int, bool, extern void collect_eh_region_array (void); extern void expand_resx_expr (tree); +extern void verify_eh_tree (struct function *); +extern void dump_eh_tree (FILE *, struct function *); /* tree-eh.c */ +extern void add_stmt_to_eh_region_fn (struct function *, tree, int); +extern bool remove_stmt_from_eh_region_fn (struct function *, tree); +extern int lookup_stmt_eh_region_fn (struct function *, tree); extern int lookup_stmt_eh_region (tree); +extern bool verify_eh_edges (tree); /* If non-NULL, this is a function that returns an expression to be executed if an unhandled exception is propagated out of a cleanup @@ -155,3 +163,12 @@ extern tree (*lang_eh_runtime_type) (tree); #else # define USING_SJLJ_EXCEPTIONS MUST_USE_SJLJ_EXCEPTIONS #endif + +struct throw_stmt_node GTY(()) +{ + tree stmt; + int region_nr; +}; + +extern struct htab *get_eh_throw_stmt_table (struct function *); +extern void set_eh_throw_stmt_table (struct function *, struct htab *);