decl.c (gnat_to_gnu_entity): Adjust comment about type extension with discriminants.
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 7 Jan 2013 10:39:45 +0000 (10:39 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 7 Jan 2013 10:39:45 +0000 (10:39 +0000)
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Adjust
comment about type extension with discriminants.
<E_Record_Subtype>: Remove useless test and reorder conditions.
(elaborate_entity) <E_Record_Subtype>: Likewise.

From-SVN: r194965

gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c

index c7ee997..c644b26 100644 (file)
@@ -1,3 +1,10 @@
+2013-01-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Adjust
+       comment about type extension with discriminants.
+       <E_Record_Subtype>: Remove useless test and reorder conditions.
+       (elaborate_entity) <E_Record_Subtype>: Likewise.
+
 2013-01-07  Richard Biener  <rguenther@suse.de>
 
        PR ada/864
index 3284f84..d6729f7 100644 (file)
@@ -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<subst_pair> 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;