summaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-26 08:05:08 +0000
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-26 08:05:08 +0000
commitda3bde1af497bdbca67c9cc286cd53e840c80675 (patch)
treecfe07bea6bb16ce7c1fb93015c4dcaee7c859776 /gcc/tree-inline.c
parent5b458842bca64c09b16f91e1b360e3f3cbf30fc7 (diff)
downloadgcc-da3bde1af497bdbca67c9cc286cd53e840c80675.tar.gz
* tree-inline.c (remap_decl): Don't copy size and size_unit here.
(remap_save_expr): Map a remapped SAVE_EXPR to error_mark_node. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46536 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 5e2c3c47f24..25d0964ec02 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -147,8 +147,6 @@ remap_decl (decl, id)
/* The decl T could be a dynamic array or other variable size type,
in which case some fields need to be remapped because they may
contain SAVE_EXPRs. */
- walk_tree (&DECL_SIZE (t), copy_body_r, id, NULL);
- walk_tree (&DECL_SIZE_UNIT (t), copy_body_r, id, NULL);
if (TREE_TYPE (t) && TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE
&& TYPE_DOMAIN (TREE_TYPE (t)))
{
@@ -1373,6 +1371,9 @@ remap_save_expr (tp, st_, fn, walk_subtrees)
n = splay_tree_insert (st,
(splay_tree_key) *tp,
(splay_tree_value) t);
+ /* Make sure we don't remap an already-remapped SAVE_EXPR. */
+ splay_tree_insert (st, (splay_tree_key) t,
+ (splay_tree_value) error_mark_node);
}
else
/* We've already walked into this SAVE_EXPR, so we needn't do it