diff options
author | Jan Hubicka <hubicka@gcc.gnu.org> | 2005-06-23 13:20:02 +0000 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2005-06-23 13:20:02 +0000 |
commit | 17acc01a4683ed10f27252b9abbb69487fc5f04c (patch) | |
tree | d84fe1227cea7e2fd1d59cfe1c3adfe14c30b5f9 /gcc | |
parent | 6c8cba6db4c176c288a60bba28509bed5fc51fdb (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/tree-inline.c | 6 |
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. */ |