2012-03-30 Gary Dismukes <dismukes@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Mar 2012 09:17:34 +0000 (09:17 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Mar 2012 09:17:34 +0000 (09:17 +0000)
* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): For the case of a
loop entity which is rewritten as a renaming
of the indexed array, explicitly mark the entity as needing
debug info so that Materialize entity will be set later by
Debug_Renaming_Declaration when the renaming is expanded.

2012-03-30  Robert Dewar  <dewar@adacore.com>

* sem_attr.ads: Update comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185999 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/exp_ch5.adb
gcc/ada/sem_attr.ads

index 79cbb4a..9c10909 100644 (file)
@@ -1,3 +1,15 @@
+2012-03-30  Gary Dismukes  <dismukes@adacore.com>
+
+       * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): For the case of a
+       loop entity which is rewritten as a renaming
+       of the indexed array, explicitly mark the entity as needing
+       debug info so that Materialize entity will be set later by
+       Debug_Renaming_Declaration when the renaming is expanded.
+
+2012-03-30  Robert Dewar  <dewar@adacore.com>
+
+       * sem_attr.ads: Update comment.
+
 2012-03-30  Vincent Celier  <celier@adacore.com>
 
        * prj.ads: New Dependency_Kind: ALI_Closure.
index 6d00dc8..3497456 100644 (file)
@@ -3303,6 +3303,14 @@ package body Exp_Ch5 is
                New_Reference_To (Component_Type (Array_Typ), Loc),
              Name                => Ind_Comp));
 
+         --  Mark the loop variable as needing debug info, so that expansion
+         --  of the renaming will result in Materialize_Entity getting set via
+         --  Debug_Renaming_Declaration. (This setting is needed here because
+         --  the setting in Freeze_Entity comes after the expansion, which is
+         --  too late. ???)
+
+         Set_Debug_Info_Needed (Id);
+
       --  for Index in Array loop
 
       --  This case utilizes the already given iterator name
index 71ac668..45e1bc0 100644 (file)
@@ -554,12 +554,27 @@ package Sem_Attr is
       -------------------
 
       Attribute_Valid_Scalars => True,
-      --  Obj'Valid_Scalars applies to objects of scalar types, on which it is
-      --  equivalent to Obj'Valid, and objects of array and record types, on
-      --  which it amounts to applying 'Valid to each subcomponent of Obj. It
-      --  does not apply to prefixes of classwide type, or of a formal generic
-      --  type that has an unknown discriminant (which could be instantiated
-      --  with a classwide type).
+      --  Obj'Valid_Scalars can be applied to any object. The result depends
+      --  on the type of the object:
+      --
+      --    For a scalar type, the result is the same as obj'Valid
+      --
+      --    For an array object, the result is True if the result of applying
+      --    Valid_Scalars to every component is True.
+      --
+      --    For a record object, the result is True if the result of applying
+      --    Valid_Scalars to every component is True. For class-wide types,
+      --    only the components of the base type are checked. For variant
+      --    records, only the components actually present are checked.
+      --
+      --    For all other types, the result is always True
+      --
+      --  A warning is given for a trivially True result, when the attribute
+      --  is applied to an object that is not of scalar, array, or record
+      --  type, or in the composite case if no scalar subcomponents exist. For
+      --  a variant record, the warning is given only if none of the variants
+      --  have scalar subcomponents. In addition, the warning is suppressed
+      --  for private types, or generic types in an instance.
 
       ----------------
       -- Value_Size --