OSDN Git Service

* tree-inline.c (remap_decl): Don't copy size and size_unit here.
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Oct 2001 08:05:08 +0000 (08:05 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Oct 2001 08:05:08 +0000 (08:05 +0000)
(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

gcc/ChangeLog
gcc/tree-inline.c

index b66c8d5..4fc1b1e 100644 (file)
@@ -1,3 +1,8 @@
+2001-10-26  Alexandre Oliva  <aoliva@redhat.com>
+
+       * 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.
+
 2001-10-26  Richard Henderson  <rth@redhat.com>
 
        * config/alpha/alpha.h (enum reg_class): Add R24_REG, R25_REG;
index 5e2c3c4..25d0964 100644 (file)
@@ -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