From 9659ce8b6160434d90f8b7985921f0b05e74d2d7 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 4 Aug 2006 19:03:32 +0200 Subject: [PATCH] re PR tree-optimization/24888 (duplication of local variables after versioning/inlining) PR tree-optimization/24888 * tree-inline.c (expand_call_inline): Do not re-record variables. (declare_inline_vars): Add variable to unexpanded_var_list. From-SVN: r115927 --- gcc/ChangeLog | 6 ++++++ gcc/tree-inline.c | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index af93012c36e..642cde8cdb9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-08-04 Jan Hubicka + + PR tree-optimization/24888 + * tree-inline.c (expand_call_inline): Do not re-record variables. + (declare_inline_vars): Add variable to unexpanded_var_list. + 2006-08-04 John David Anglin Roger Sayle diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 92d85a89b2b..b05bf2665f5 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -2163,8 +2163,6 @@ expand_call_inline (basic_block bb, tree stmt, tree *tp, void *data) /* Update callgraph if needed. */ cgraph_remove_node (cg_edge->callee); - /* Declare the 'auto' variables added with this inlined body. */ - record_vars (BLOCK_VARS (id->block)); id->block = NULL_TREE; successfully_inlined = TRUE; @@ -2556,7 +2554,13 @@ declare_inline_vars (tree block, tree vars) { tree t; for (t = vars; t; t = TREE_CHAIN (t)) - DECL_SEEN_IN_BIND_EXPR_P (t) = 1; + { + DECL_SEEN_IN_BIND_EXPR_P (t) = 1; + gcc_assert (!TREE_STATIC (t) && !TREE_ASM_WRITTEN (t)); + cfun->unexpanded_var_list = + tree_cons (NULL_TREE, t, + cfun->unexpanded_var_list); + } if (block) BLOCK_VARS (block) = chainon (BLOCK_VARS (block), vars); -- 2.30.2