From d7de959da087f0a276b32a8bc6ea4f4d06d48a5d Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Mon, 7 Jan 2013 10:39:45 +0000 Subject: [PATCH] * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust comment about type extension with discriminants. : Remove useless test and reorder conditions. (elaborate_entity) : Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194965 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 7 +++++++ gcc/ada/gcc-interface/decl.c | 13 +++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index c7ee997..c644b26 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2013-01-07 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust + comment about type extension with discriminants. + : Remove useless test and reorder conditions. + (elaborate_entity) : Likewise. + 2013-01-07 Richard Biener PR ada/864 diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 3284f84..d6729f7 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -3006,9 +3006,9 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) tree gnu_parent; /* A major complexity here is that the parent subtype will - reference our discriminants in its Discriminant_Constraint - list. But those must reference the parent component of this - record which is of the parent subtype we have not built yet! + reference our discriminants in its Stored_Constraint list. + But those must reference the parent component of this record + which is precisely of the parent subtype we have not built yet! To break the circle we first build a dummy COMPONENT_REF which represents the "get to the parent" operation and initialize each of those discriminants to a COMPONENT_REF of the above @@ -3287,9 +3287,8 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) if (IN (Ekind (gnat_base_type), Record_Kind) && !Is_Unchecked_Union (gnat_base_type) && !Is_For_Access_Subtype (gnat_entity) - && Is_Constrained (gnat_entity) && Has_Discriminants (gnat_entity) - && Present (Discriminant_Constraint (gnat_entity)) + && Is_Constrained (gnat_entity) && Stored_Constraint (gnat_entity) != No_Elist) { vec gnu_subst_list @@ -5948,9 +5947,7 @@ elaborate_entity (Entity_Id gnat_entity) case E_Private_Subtype: case E_Limited_Private_Subtype: case E_Record_Subtype_With_Private: - if (Is_Constrained (gnat_entity) - && Has_Discriminants (gnat_entity) - && Present (Discriminant_Constraint (gnat_entity))) + if (Has_Discriminants (gnat_entity) && Is_Constrained (gnat_entity)) { Node_Id gnat_discriminant_expr; Entity_Id gnat_field; -- 2.7.4