aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@gcc.gnu.org>2005-06-23 13:20:02 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2005-06-23 13:20:02 +0000
commit17acc01a4683ed10f27252b9abbb69487fc5f04c (patch)
treed84fe1227cea7e2fd1d59cfe1c3adfe14c30b5f9 /gcc/tree-inline.c
parent6c8cba6db4c176c288a60bba28509bed5fc51fdb (diff)
downloadgcc-17acc01a4683ed10f27252b9abbb69487fc5f04c.zip
gcc-17acc01a4683ed10f27252b9abbb69487fc5f04c.tar.gz
gcc-17acc01a4683ed10f27252b9abbb69487fc5f04c.tar.bz2
* tree-inline.c (copy_body_r): Remap labels correctly.
From-SVN: r101266
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index ee30ccc..c670c57 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -554,9 +554,11 @@ copy_body_r (tree *tp, int *walk_subtrees, void *data)
copy_statement_list (tp);
else if (TREE_CODE (*tp) == SAVE_EXPR)
remap_save_expr (tp, id->decl_map, walk_subtrees);
- else if (TREE_CODE (*tp) == LABEL_DECL)
+ else if (TREE_CODE (*tp) == LABEL_DECL
+ && (! DECL_CONTEXT (*tp)
+ || decl_function_context (*tp) == id->callee))
/* These may need to be remapped for EH handling. */
- remap_decl (*tp, id);
+ *tp = remap_decl (*tp, id);
else if (TREE_CODE (*tp) == BIND_EXPR)
copy_bind_expr (tp, walk_subtrees, id);
/* Types may need remapping as well. */