aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
-rw-r--r--gcc/ada/gcc-interface/utils.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index 8c5dc58..51bce2f 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -977,6 +977,11 @@ finish_record_type (tree record_type, tree fieldlist, int rep_level,
if (code == QUAL_UNION_TYPE)
nreverse (fieldlist);
+ /* If the type is discriminated, it can be used to access all its
+ constrained subtypes, so force structural equality checks. */
+ if (CONTAINS_PLACEHOLDER_P (size))
+ SET_TYPE_STRUCTURAL_EQUALITY (record_type);
+
if (rep_level < 2)
{
/* If this is a padding record, we never want to make the size smaller