diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-03-22 12:50:45 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-03-22 12:50:45 +0000 |
commit | 30b822ea3ac49643606cec17d2c5052f5b45780f (patch) | |
tree | 600f6369cacf022589c2e874590e5a90eb2f99e5 /gcc/except.h | |
parent | f2df240119d5a44567727d18f595f72b8876428e (diff) | |
download | gcc-30b822ea3ac49643606cec17d2c5052f5b45780f.tar.gz |
PR middle-end/26084
* except.c (duplicate_eh_regions_0): New.
(duplicate_eh_region_1): Duplicate the children of the node as
well as the node itself. Link them up properly.
(duplicate_eh_region_2): Merge into ...
(duplicate_eh_regions): ... here. Take copy_region argument, and
copy only a sub-tree if asked. Simplify copying and fixup.
(eh_region_outer_p): New.
* except.h (duplicate_eh_regions): Update decl.
(eh_region_outer_p): Declare.
* omp-low.c (lower_omp_single): Fix eh region placement wrt OMP_RETURN.
(lower_omp_master): Likewise.
(lower_omp_ordered): Likewise.
* tree-cfg.c (struct move_stmt_d): Add new_label_map.
(move_stmt_r): Use it to remap labels. Handle recursion vs
remap_decls_p properly.
(move_block_to_fn): Pass in new_label_map. Remap RESX_EXPR.
(find_outermost_region_in_block): New.
(new_label_mapper): New.
(move_sese_region_to_fn): Copy eh information to the new function
properly.
* tree-inline.c (copy_cfg_body): Update for new duplicate_eh_regions
argument.
* tree-pretty-print.c (dump_generic_node): Dump RESX_EXPR region
number.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112283 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.h')
-rw-r--r-- | gcc/except.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/except.h b/gcc/except.h index 46914d4205c..5b28296c8b4 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -82,7 +82,8 @@ 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 int duplicate_eh_regions (struct function *, duplicate_eh_regions_map, + void *, int, int); extern void sjlj_emit_function_exit_after (rtx); extern void default_init_unwind_resume_libfunc (void); @@ -106,6 +107,7 @@ 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 *); +extern bool eh_region_outer_p (struct function *, int, int); /* tree-eh.c */ extern void add_stmt_to_eh_region_fn (struct function *, tree, int); |