summaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-04 17:03:32 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-04 17:03:32 +0000
commit8e224d28cc918111953d89df4c5a1f837720acf5 (patch)
treed0caa9a1ab904708ee4a7426cf34ec43d34b434f /gcc/tree-inline.c
parent0518a4654158e334d3947b485dc2fec353e80e9b (diff)
downloadgcc-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.c10
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);