aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-05-31 10:45:57 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-05-31 10:45:57 +0000
commit42e4b796dccc43e0a30cd26186037f3fda7639fd (patch)
tree8b5c16ea50b86b6a95926011662787278726e603 /gcc/ada/gcc-interface/utils.c
parent59f7c7167a75bdb3992f2c7fb3b358124aea8404 (diff)
downloadgcc-42e4b796dccc43e0a30cd26186037f3fda7639fd.zip
gcc-42e4b796dccc43e0a30cd26186037f3fda7639fd.tar.gz
gcc-42e4b796dccc43e0a30cd26186037f3fda7639fd.tar.bz2
[Ada] Post warning on object size clause for subtype
This ensures that a warning for an object size clause present on a subtype is posted on the clause and not on a size clause present on the type. 2018-05-31 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * einfo.ads (Object_Size_Clause): Declare. * einfo.adb (Object_Size_Clause): New function. * gcc-interface/utils.c (maybe_pad_type): Test Has_Size_Clause before retrieving Size_Clause and post the warning on the object size clause if Has_Object_Size_Clause is true. gcc/testsuite/ * gnat.dg/size_clause1.adb: New testcase. From-SVN: r260998
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
-rw-r--r--gcc/ada/gcc-interface/utils.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index cc25973..7de76637 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -1507,7 +1507,7 @@ built:
|| TREE_OVERFLOW (orig_size)
|| tree_int_cst_lt (size, orig_size))))
{
- Node_Id gnat_error_node = Empty;
+ Node_Id gnat_error_node;
/* For a packed array, post the message on the original array type. */
if (Is_Packed_Array_Impl_Type (gnat_entity))
@@ -1517,8 +1517,12 @@ built:
|| Ekind (gnat_entity) == E_Discriminant)
&& Present (Component_Clause (gnat_entity)))
gnat_error_node = Last_Bit (Component_Clause (gnat_entity));
- else if (Present (Size_Clause (gnat_entity)))
+ else if (Has_Size_Clause (gnat_entity))
gnat_error_node = Expression (Size_Clause (gnat_entity));
+ else if (Has_Object_Size_Clause (gnat_entity))
+ gnat_error_node = Expression (Object_Size_Clause (gnat_entity));
+ else
+ gnat_error_node = Empty;
/* Generate message only for entities that come from source, since
if we have an entity created by expansion, the message will be