From 30b822ea3ac49643606cec17d2c5052f5b45780f Mon Sep 17 00:00:00 2001 From: rth Date: Wed, 22 Mar 2006 12:50:45 +0000 Subject: 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 --- gcc/tree-inline.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gcc/tree-inline.c') diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 8d258ffd0c5..3e35842a76e 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -924,7 +924,8 @@ copy_cfg_body (copy_body_data * id, gcov_type count, int frequency, if (id->transform_new_cfg) init_eh_for_function (); id->eh_region_offset - = duplicate_eh_regions (cfun_to_copy, remap_decl_1, id, id->eh_region); + = duplicate_eh_regions (cfun_to_copy, remap_decl_1, id, + 0, id->eh_region); } /* Use aux pointers to map the original blocks to copy. */ FOR_EACH_BB_FN (bb, cfun_to_copy) -- cgit v1.2.3