aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJosef Zlomek <zlomekj@suse.cz>2004-02-14 20:38:46 +0100
committerJosef Zlomek <zlomek@gcc.gnu.org>2004-02-14 19:38:46 +0000
commit5852680bfc7da3ad2688f08453ba6ba5fa689853 (patch)
treefc248f5dd30faba17dce63ec5f52b3857b5bcd8c /gcc
parent2cf20d32523a1817a0362f098e693cbc0d804d0f (diff)
downloadgcc-5852680bfc7da3ad2688f08453ba6ba5fa689853.zip
gcc-5852680bfc7da3ad2688f08453ba6ba5fa689853.tar.gz
gcc-5852680bfc7da3ad2688f08453ba6ba5fa689853.tar.bz2
* tree-inline.c (copy_body_r): Do not replace ret_label.
From-SVN: r77820
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/tree-inline.c7
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 35a7709..d960d60 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2004-02-14 Josef Zlomek <zlomekj@suse.cz>
+
+ * tree-inline.c (copy_body_r): Do not replace ret_label.
+
2004-02-14 Jan Hubicka <jh@suse.cz>
* i386.c (x86_four_jump_limit): New variable.
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 6d3fcf8..ce0b415 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -572,8 +572,11 @@ copy_body_r (tree *tp, int *walk_subtrees, void *data)
/* Local variables and labels need to be replaced by equivalent
variables. We don't want to copy static variables; there's only
one of those, no matter how many times we inline the containing
- function. */
- else if ((*lang_hooks.tree_inlining.auto_var_in_fn_p) (*tp, fn))
+ function.
+ We do not also want to copy the label which we put into
+ GOTO_STMT which replaced RETURN_STMT. */
+ else if (*tp != id->ret_label
+ && (*lang_hooks.tree_inlining.auto_var_in_fn_p) (*tp, fn))
{
tree new_decl;