aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2020-09-10 17:59:11 +0200
committerEric Botcazou <ebotcazou@gcc.gnu.org>2020-09-10 18:00:57 +0200
commite63eb26d22dbbbbb67f7f240ea5a7234cd2498cb (patch)
treecc0a7633f6e4adc2d8ed81b0af58568d584a2ce6 /gcc/ada/gcc-interface
parent71465223b95af43951c423ad77391e706f02901d (diff)
downloadgcc-e63eb26d22dbbbbb67f7f240ea5a7234cd2498cb.zip
gcc-e63eb26d22dbbbbb67f7f240ea5a7234cd2498cb.tar.gz
gcc-e63eb26d22dbbbbb67f7f240ea5a7234cd2498cb.tar.bz2
Fix bogus error on Value_Size clause for variant record type
This is a regression present on the mainline and 10 branch: the compiler rejects a Value_Size clause on a discriminated record type with variant. gcc/ada/ChangeLog: * gcc-interface/decl.c (set_rm_size): Do not take into account the Value_Size clause if it is not for the entity itself. gcc/testsuite/ChangeLog: * gnat.dg/specs/size_clause5.ads: New test.
Diffstat (limited to 'gcc/ada/gcc-interface')
-rw-r--r--gcc/ada/gcc-interface/decl.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index f85b2b5..8045fa5 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -9083,10 +9083,12 @@ set_rm_size (Uint uint_size, tree gnu_type, Entity_Id gnat_entity)
if (uint_size == No_Uint)
return;
- /* Only issue an error if a Value_Size clause was explicitly given.
- Otherwise, we'd be duplicating an error on the Size clause. */
+ /* Only issue an error if a Value_Size clause was explicitly given for the
+ entity; otherwise, we'd be duplicating an error on the Size clause. */
gnat_attr_node
= Get_Attribute_Definition_Clause (gnat_entity, Attr_Value_Size);
+ if (Present (gnat_attr_node) && Entity (gnat_attr_node) != gnat_entity)
+ gnat_attr_node = Empty;
/* Get the size as an INTEGER_CST. Issue an error if a size was specified
but cannot be represented in bitsizetype. */