aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/decl.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2010-08-06 12:58:04 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2010-08-06 12:58:04 +0000
commitf25496f35244af6ff790cdff903b92d38c4bd4ec (patch)
treeeda1b15fc8cf61d3b3705c70f9ad431905c56023 /gcc/ada/gcc-interface/decl.c
parent49f6cd1f259bb6060bcd6f912781f1edd96a8dff (diff)
downloadgcc-f25496f35244af6ff790cdff903b92d38c4bd4ec.zip
gcc-f25496f35244af6ff790cdff903b92d38c4bd4ec.tar.gz
gcc-f25496f35244af6ff790cdff903b92d38c4bd4ec.tar.bz2
decl.c (gnat_to_gnu_entity): Do not build an allocator for large imported objects.
* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not build an allocator for large imported objects. From-SVN: r162947
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r--gcc/ada/gcc-interface/decl.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 13a3153..ff821cf 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -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
{