]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
decl.c (gnat_to_gnu_entity): Do not build an allocator for large imported objects.
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 6 Aug 2010 12:58:04 +0000 (12:58 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 6 Aug 2010 12:58:04 +0000 (12:58 +0000)
* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not build an
allocator for large imported objects.

From-SVN: r162947

gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c

index 224099ba77e0be6c53b8ff4a2dcc2367e5178de2..2079538a75e45568446bf2021322115ffc8d4eca 100644 (file)
@@ -1,3 +1,8 @@
+2010-08-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not build an
+       allocator for large imported objects.
+
 2010-08-05  Robert Dewar  <dewar@adacore.com>
 
        * gnat1drv.adb: Minor reformatting.
index 13a31536e575b3ecaa375e53b7b3c1f3cb5efef7..ff821cf4660f0f9a4dbb12e7275a3897d3bdf911 100644 (file)
@@ -1180,7 +1180,6 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
            gnu_type = build_reference_type (gnu_type);
            gnu_size = NULL_TREE;
            used_by_ref = true;
-           const_flag = true;
 
            /* In case this was a aliased object whose nominal subtype is
               unconstrained, the pointer above will be a thin pointer and
@@ -1194,7 +1193,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
               If we are elaborating a mutable object, tell build_allocator to
               ignore a possibly simpler size from the initializer, if any, as
               we must allocate the maximum possible size in this case.  */
-           if (definition)
+           if (definition && !imported_p)
              {
                tree gnu_alloc_type = TREE_TYPE (gnu_type);
 
@@ -1217,14 +1216,14 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
                  }
 
                if (TREE_CODE (TYPE_SIZE_UNIT (gnu_alloc_type)) == INTEGER_CST
-                   && TREE_OVERFLOW (TYPE_SIZE_UNIT (gnu_alloc_type))
-                   && !Is_Imported (gnat_entity))
+                   && TREE_OVERFLOW (TYPE_SIZE_UNIT (gnu_alloc_type)))
                  post_error ("?`Storage_Error` will be raised at run time!",
                              gnat_entity);
 
                gnu_expr
                  = build_allocator (gnu_alloc_type, gnu_expr, gnu_type,
                                     Empty, Empty, gnat_entity, mutable_p);
+               const_flag = true;
              }
            else
              {