From b4d9f546f8d416691223180dbfa09bfc6553193a Mon Sep 17 00:00:00 2001 From: charlet Date: Fri, 30 Mar 2012 09:17:34 +0000 Subject: [PATCH] 2012-03-30 Gary Dismukes * 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 * 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 | 12 ++++++++++++ gcc/ada/exp_ch5.adb | 8 ++++++++ gcc/ada/sem_attr.ads | 27 +++++++++++++++++++++------ 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 79cbb4a..9c10909 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,15 @@ +2012-03-30 Gary Dismukes + + * 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 + + * sem_attr.ads: Update comment. + 2012-03-30 Vincent Celier * prj.ads: New Dependency_Kind: ALI_Closure. diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb index 6d00dc8..3497456 100644 --- a/gcc/ada/exp_ch5.adb +++ b/gcc/ada/exp_ch5.adb @@ -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 diff --git a/gcc/ada/sem_attr.ads b/gcc/ada/sem_attr.ads index 71ac668..45e1bc0 100644 --- a/gcc/ada/sem_attr.ads +++ b/gcc/ada/sem_attr.ads @@ -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 -- -- 2.7.4