diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-08-04 17:03:32 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-08-04 17:03:32 +0000 |
commit | 8e224d28cc918111953d89df4c5a1f837720acf5 (patch) | |
tree | d0caa9a1ab904708ee4a7426cf34ec43d34b434f /gcc/tree-inline.c | |
parent | 0518a4654158e334d3947b485dc2fec353e80e9b (diff) | |
download | gcc-8e224d28cc918111953d89df4c5a1f837720acf5.tar.gz |
PR tree-optimization/24888
* tree-inline.c (expand_call_inline): Do not re-record variables.
(declare_inline_vars): Add variable to unexpanded_var_list.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115927 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 10 |
1 files changed, 7 insertions, 3 deletions
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); |