From: Eric Botcazou Date: Mon, 31 Mar 2008 19:14:08 +0000 (+0000) Subject: decl.c (gnat_to_gnu_entity): Do not force a non-null size if it has overflowed. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5a864002b8608352188f6019d28ba15878e05363;p=gcc.git decl.c (gnat_to_gnu_entity): Do not force a non-null size if it has overflowed. * decl.c (gnat_to_gnu_entity) : Do not force a non-null size if it has overflowed. From-SVN: r133768 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index d10a213bb81..f5b9df21c6d 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,10 @@ +2008-03-31 Eric Botcazou + + * decl.c (gnat_to_gnu_entity) : Do not force a non-null + size if it has overflowed. + 2008-03-31 Olivier Hainque - Eric Botcazou + Eric Botcazou * utils2.c (find_common_type): Document assumption on t1/t2 vs lhs/rhs. Force use of lhs type if smaller, whatever the modes. diff --git a/gcc/ada/decl.c b/gcc/ada/decl.c index 88198745fa8..6f92fac5428 100644 --- a/gcc/ada/decl.c +++ b/gcc/ada/decl.c @@ -640,8 +640,12 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) clause, as we would lose useful information on the view size (e.g. for null array slices) and we are not allocating the object here anyway. */ - if (((gnu_size && integer_zerop (gnu_size)) - || (TYPE_SIZE (gnu_type) && integer_zerop (TYPE_SIZE (gnu_type)))) + if (((gnu_size + && integer_zerop (gnu_size) + && !TREE_OVERFLOW (gnu_size)) + || (TYPE_SIZE (gnu_type) + && integer_zerop (TYPE_SIZE (gnu_type)) + && !TREE_OVERFLOW (TYPE_SIZE (gnu_type)))) && (!Is_Constr_Subt_For_UN_Aliased (Etype (gnat_entity)) || !Is_Array_Type (Etype (gnat_entity))) && !Present (Renamed_Object (gnat_entity)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b62c44e6650..ba35c2b2542 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-03-31 Eric Botcazou + + * gnat.dg/object_overflow.adb: New test. + 2008-03-31 Andrew Pinski PR middle-end/30186 diff --git a/gcc/testsuite/gnat.dg/object_overflow.adb b/gcc/testsuite/gnat.dg/object_overflow.adb new file mode 100644 index 00000000000..820e93656e6 --- /dev/null +++ b/gcc/testsuite/gnat.dg/object_overflow.adb @@ -0,0 +1,14 @@ +-- { dg-do compile } + +procedure Object_Overflow is + + type Rec is null record; + + procedure Proc (x : Rec) is begin null; end; + + type Arr is array(Long_Integer) of Rec; + Obj : Arr; -- { dg-warning "Storage_Error will be raised" } + +begin + Proc (Obj(1)); +end;