OSDN Git Service

* tree-nested.c (get_frame_type): Mark the "non-local frame structure"
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Sep 2005 06:15:36 +0000 (06:15 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Sep 2005 06:15:36 +0000 (06:15 +0000)
as addressable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104300 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-nested.c

index e111d5d..d901c8c 100644 (file)
@@ -1,3 +1,8 @@
+2005-09-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree-nested.c (get_frame_type): Mark the "non-local frame structure"
+       as addressable.
+
 2005-09-15  Michael Matz  <matz@suse.de>
 
        * tree-vrp.c (vrp_int_const_binop <MINUS_EXPR>): Handle 0 - -INF.
index 6f0b7fd..d42c583 100644 (file)
@@ -220,6 +220,14 @@ get_frame_type (struct nesting_info *info)
 
       info->frame_type = type;
       info->frame_decl = create_tmp_var_for (info, type, "FRAME");
+
+      /* ??? Always make it addressable for now, since it is meant to
+        be pointed to by the static chain pointer.  This pessimizes
+        when it turns out that no static chains are needed because
+        the nested functions referencing non-local variables are not
+        reachable, but the true pessimization is to create the non-
+        local frame structure in the first place.  */
+      TREE_ADDRESSABLE (info->frame_decl) = 1;
     }
   return type;
 }