From b0159fbee916e3bbeb2d661b40ae4483a0bcb9b7 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Sat, 11 Jul 2009 19:46:23 +0200 Subject: [PATCH] [multiple changes] 2009-07-11 Thomas Quinot * sem_util.adb, sem_res.adb, sem_warn.adb: Minor comment editing: Lvalue -> lvalue * exp_ch6.adb: Minor reformatting 2009-07-11 Ed Schonberg * freeze.adb (Expand_Atomic_Aggregate): Clean up code, take into account possible type qualification to determine whether aggregate needs a target temporary to respect atomic type or object. * exp_aggr.adb (Expand_Record_Aggregate): Use new version of Expand_Atomic_Aggregate. 2009-07-11 Emmanuel Briot * prj.adb, prj.ads, prj-nmsc.adb (Mark_Excluded_Sources): Speed up algorithm. (Excluded_Sources_Htable): No longer a global table. Change error message to indicate which files are illegal in the list of excluded files, as opposed to only the location in the project file. (Find_Source): New subprogram. From-SVN: r149515 --- gcc/ada/ChangeLog | 26 +++++++++ gcc/ada/exp_aggr.adb | 4 +- gcc/ada/exp_ch6.adb | 4 +- gcc/ada/freeze.adb | 31 +++++++--- gcc/ada/freeze.ads | 9 ++- gcc/ada/prj-nmsc.adb | 158 ++++++++++++++++++++++++++++----------------------- gcc/ada/prj.adb | 46 +++++++++++++++ gcc/ada/prj.ads | 9 +++ gcc/ada/sem_res.adb | 2 +- gcc/ada/sem_util.adb | 32 +++++------ gcc/ada/sem_warn.adb | 2 +- 11 files changed, 219 insertions(+), 104 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 37e512b..187fa57 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,29 @@ +2009-07-11 Thomas Quinot + + * sem_util.adb, sem_res.adb, sem_warn.adb: Minor comment editing: + Lvalue -> lvalue + + * exp_ch6.adb: Minor reformatting + +2009-07-11 Ed Schonberg + + * freeze.adb (Expand_Atomic_Aggregate): Clean up code, take into + account possible type qualification to determine whether aggregate + needs a target temporary to respect atomic type or object. + + * exp_aggr.adb (Expand_Record_Aggregate): Use new version of + Expand_Atomic_Aggregate. + +2009-07-11 Emmanuel Briot + + * prj.adb, prj.ads, prj-nmsc.adb (Mark_Excluded_Sources): Speed up + algorithm. + (Excluded_Sources_Htable): No longer a global table. + Change error message to indicate which files are illegal in the list + of excluded files, as opposed to only the location in the project + file. + (Find_Source): New subprogram. + 2009-07-10 Thomas Quinot * exp_ch7.adb: Update comments. diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index a65a713..fc61076 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -5475,11 +5475,9 @@ package body Exp_Aggr is -- an atomic move for it. if Is_Atomic (Typ) - and then Nkind_In (Parent (N), N_Object_Declaration, - N_Assignment_Statement) and then Comes_From_Source (Parent (N)) + and then Expand_Atomic_Aggregate (N, Typ) then - Expand_Atomic_Aggregate (N, Typ); return; -- No special management required for aggregates used to initialize diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb index c3abeca..3142174 100644 --- a/gcc/ada/exp_ch6.adb +++ b/gcc/ada/exp_ch6.adb @@ -1146,7 +1146,7 @@ package body Exp_Ch6 is -- resulting variable is a temporary which does not designate -- the proper out-parameter, which may not be addressable. In -- that case, generate an assignment to the original expression - -- (before expansion of the packed reference) so that the proper + -- (before expansion of the packed reference) so that the proper -- expansion of assignment to a packed component can take place. declare @@ -4661,7 +4661,7 @@ package body Exp_Ch6 is end if; -- Analyze and resolve the new call. The actuals have already been - -- resolved, but expansion of a function call will add extra actuals + -- resolved, but expansion of a function call will add extra actuals -- if needed. Analysis of a procedure call already includes resolution. Analyze (N); diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index e66dc14..f464f19 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -1115,15 +1115,27 @@ package body Freeze is -- Expand_Atomic_Aggregate -- ----------------------------- - procedure Expand_Atomic_Aggregate (E : Entity_Id; Typ : Entity_Id) is + function Expand_Atomic_Aggregate + (E : Entity_Id; + Typ : Entity_Id) return Boolean + is Loc : constant Source_Ptr := Sloc (E); New_N : Node_Id; + Par : Node_Id; Temp : Entity_Id; begin - if (Nkind (Parent (E)) = N_Object_Declaration - or else Nkind (Parent (E)) = N_Assignment_Statement) - and then Comes_From_Source (Parent (E)) + Par := Parent (E); + + -- Array may be qualified, so find outer context. + + if Nkind (Par) = N_Qualified_Expression then + Par := Parent (Par); + end if; + + if (Nkind (Par) = N_Object_Declaration + or else Nkind (Par) = N_Assignment_Statement) + and then Comes_From_Source (Par) then Temp := Make_Defining_Identifier (Loc, @@ -1134,11 +1146,14 @@ package body Freeze is Defining_Identifier => Temp, Object_Definition => New_Occurrence_Of (Typ, Loc), Expression => Relocate_Node (E)); - Insert_Before (Parent (E), New_N); + Insert_Before (Par, New_N); Analyze (New_N); - Set_Expression (Parent (E), New_Occurrence_Of (Temp, Loc)); + Set_Expression (Par, New_Occurrence_Of (Temp, Loc)); + return True; + else + return False; end if; end Expand_Atomic_Aggregate; @@ -2351,8 +2366,10 @@ package body Freeze is and then Nkind (Parent (E)) = N_Object_Declaration and then Present (Expression (Parent (E))) and then Nkind (Expression (Parent (E))) = N_Aggregate + and then + Expand_Atomic_Aggregate (Expression (Parent (E)), Etype (E)) then - Expand_Atomic_Aggregate (Expression (Parent (E)), Etype (E)); + null; end if; -- For a subprogram, freeze all parameter types and also the return diff --git a/gcc/ada/freeze.ads b/gcc/ada/freeze.ads index 1afec17..ac2fa8c 100644 --- a/gcc/ada/freeze.ads +++ b/gcc/ada/freeze.ads @@ -175,12 +175,17 @@ package Freeze is -- do not allow a size clause if the size would not otherwise be known at -- compile time in any case. - procedure Expand_Atomic_Aggregate (E : Entity_Id; Typ : Entity_Id); + function Expand_Atomic_Aggregate + (E : Entity_Id; + Typ : Entity_Id) return Boolean; + -- If an atomic object is initialized with an aggregate or is assigned -- an aggregate, we have to prevent a piecemeal access or assignment -- to the object, even if the aggregate is to be expanded. We create -- a temporary for the aggregate, and assign the temporary instead, - -- so that the back end can generate an atomic move for it. + -- so that the back end can generate an atomic move for it. This is + -- only done in the context of an object declaration or an assignment. + -- Function is a noop and returns false in other contexts. function Freeze_Entity (E : Entity_Id; Loc : Source_Ptr) return List_Id; -- Freeze an entity, and return Freeze nodes, to be inserted at the diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb index 2ff40e4..8ba7981 100644 --- a/gcc/ada/prj-nmsc.adb +++ b/gcc/ada/prj-nmsc.adb @@ -181,7 +181,7 @@ package body Prj.Nmsc is No_File_Found : constant File_Found := (No_File, False, No_Location); -- Comments needed ??? - package Excluded_Sources_Htable is new GNAT.HTable.Simple_HTable + package Excluded_Sources_Htable is new GNAT.Dynamic_HTables.Simple_HTable (Header_Num => Header_Num, Element => File_Found, No_Element => No_File_Found, @@ -192,8 +192,9 @@ package body Prj.Nmsc is -- Find_Excluded_Sources below. procedure Find_Excluded_Sources - (Project : Project_Id; - In_Tree : Project_Tree_Ref); + (Project : Project_Id; + In_Tree : Project_Tree_Ref; + Excluded : in out Excluded_Sources_Htable.Instance); -- Find the list of files that should not be considered as source files -- for this project. Sets the list in the Excluded_Sources_Htable. @@ -224,8 +225,9 @@ package body Prj.Nmsc is -- with a file name following the naming convention. procedure Load_Naming_Exceptions - (Project : Project_Id; - In_Tree : Project_Tree_Ref); + (Project : Project_Id; + In_Tree : Project_Tree_Ref; + Excluded : in out Excluded_Sources_Htable.Instance); -- All source files in Data.First_Source are considered as naming -- exceptions, and copied into the Source_Names and Unit_Exceptions tables -- as appropriate. @@ -378,7 +380,8 @@ package body Prj.Nmsc is (Project : Project_Id; In_Tree : Project_Tree_Ref; For_All_Sources : Boolean; - Allow_Duplicate_Basenames : Boolean); + Allow_Duplicate_Basenames : Boolean; + Excluded : in out Excluded_Sources_Htable.Instance); -- Search the source directories to find the sources. If For_All_Sources is -- True, check each regular file name against the naming schemes of the -- different languages. Otherwise consider only the file names in the hash @@ -462,7 +465,8 @@ package body Prj.Nmsc is (Project : Project_Id; In_Tree : Project_Tree_Ref; Proc_Data : in out Processing_Data; - Allow_Duplicate_Basenames : Boolean); + Allow_Duplicate_Basenames : Boolean; + Excluded : in out Excluded_Sources_Htable.Instance); -- Process the Source_Files and Source_List_File attributes, and store the -- list of source files into the Source_Names htable. When these attributes -- are not defined, find all files matching the naming schemes in the @@ -6573,8 +6577,9 @@ package body Prj.Nmsc is --------------------------- procedure Find_Excluded_Sources - (Project : Project_Id; - In_Tree : Project_Tree_Ref) + (Project : Project_Id; + In_Tree : Project_Tree_Ref; + Excluded : in out Excluded_Sources_Htable.Instance) is Excluded_Source_List_File : constant Variable_Value := Util.Value_Of @@ -6606,7 +6611,7 @@ package body Prj.Nmsc is (Name_Locally_Removed_Files, Project.Decl.Attributes, In_Tree); end if; - Excluded_Sources_Htable.Reset; + Excluded_Sources_Htable.Reset (Excluded); -- If there are excluded sources, put them in the table @@ -6641,7 +6646,8 @@ package body Prj.Nmsc is Location := Element.Location; end if; - Excluded_Sources_Htable.Set (Name, (Name, False, Location)); + Excluded_Sources_Htable.Set + (Excluded, Name, (Name, False, Location)); Current := Element.Next; end loop; @@ -6706,7 +6712,7 @@ package body Prj.Nmsc is end loop; Excluded_Sources_Htable.Set - (Name, (Name, False, Location)); + (Excluded, Name, (Name, False, Location)); end if; end loop; @@ -6725,7 +6731,8 @@ package body Prj.Nmsc is (Project : Project_Id; In_Tree : Project_Tree_Ref; Proc_Data : in out Processing_Data; - Allow_Duplicate_Basenames : Boolean) + Allow_Duplicate_Basenames : Boolean; + Excluded : in out Excluded_Sources_Htable.Instance) is Sources : constant Variable_Value := Util.Value_Of @@ -6894,7 +6901,8 @@ package body Prj.Nmsc is (Project, In_Tree, For_All_Sources => Sources.Default and then Source_List_File.Default, - Allow_Duplicate_Basenames => Allow_Duplicate_Basenames); + Allow_Duplicate_Basenames => Allow_Duplicate_Basenames, + Excluded => Excluded); end if; -- Check if all exceptions have been found. For Ada, it is an error if @@ -7548,7 +7556,8 @@ package body Prj.Nmsc is (Project : Project_Id; In_Tree : Project_Tree_Ref; For_All_Sources : Boolean; - Allow_Duplicate_Basenames : Boolean) + Allow_Duplicate_Basenames : Boolean; + Excluded : in out Excluded_Sources_Htable.Instance) is Source_Dir : String_List_Id; Element : String_Element; @@ -7633,8 +7642,8 @@ package body Prj.Nmsc is -- Case_Sensitive set True (no folding) Path : Path_Name_Type; - FF : File_Found := - Excluded_Sources_Htable.Get (File_Name); + FF : File_Found := Excluded_Sources_Htable.Get + (Excluded, File_Name); begin Name_Len := Path_Name'Length; @@ -7644,7 +7653,8 @@ package body Prj.Nmsc is if FF /= No_File_Found then if not FF.Found then FF.Found := True; - Excluded_Sources_Htable.Set (File_Name, FF); + Excluded_Sources_Htable.Set + (Excluded, File_Name, FF); if Current_Verbosity = High then Write_Str (" excluded source """); @@ -7691,8 +7701,9 @@ package body Prj.Nmsc is ---------------------------- procedure Load_Naming_Exceptions - (Project : Project_Id; - In_Tree : Project_Tree_Ref) + (Project : Project_Id; + In_Tree : Project_Tree_Ref; + Excluded : in out Excluded_Sources_Htable.Instance) is Source : Source_Id; Iter : Source_Iterator; @@ -7707,7 +7718,9 @@ package body Prj.Nmsc is -- An excluded file cannot also be an exception file name - if Excluded_Sources_Htable.Get (Source.File) /= No_File_Found then + if Excluded_Sources_Htable.Get (Excluded, Source.File) /= + No_File_Found + then Error_Msg_File_1 := Source.File; Error_Msg (Project, In_Tree, @@ -7764,7 +7777,9 @@ package body Prj.Nmsc is Proc_Data : in out Processing_Data; Allow_Duplicate_Basenames : Boolean) is - Iter : Source_Iterator; + Iter : Source_Iterator; + Src : Source_Id; + Excluded_Sources : Excluded_Sources_Htable.Instance; procedure Process_Sources_In_Multi_Language_Mode; -- Find all source files when in multi language mode @@ -7778,69 +7793,66 @@ package body Prj.Nmsc is procedure Mark_Excluded_Sources is Source : Source_Id := No_Source; - OK : Boolean; Excluded : File_Found; - + Proj : Project_Id; begin - Excluded := Excluded_Sources_Htable.Get_First; - while Excluded /= No_File_Found loop - OK := False; + Proj := Project; + while Proj /= No_Project loop + Iter := For_Each_Source (In_Tree, Proj); + while Prj.Element (Iter) /= No_Source loop + Source := Prj.Element (Iter); + Excluded := Excluded_Sources_Htable.Get + (Excluded_Sources, Source.File); + + if Excluded /= No_File_Found then + Source.Locally_Removed := True; + Source.In_Interfaces := False; - -- ??? Don't we have a hash table to map files to Source_Id? - -- ??? Why can't simply iterate over the sources of the current - -- project, as opposed to the whole tree ? + if Current_Verbosity = High then + Write_Str ("Removing file "); + Write_Line + (Get_Name_String (Excluded.File) + & " " & Get_Name_String (Source.Project.Name)); + end if; - Iter := For_Each_Source (In_Tree); - loop - Source := Prj.Element (Iter); - exit when Source = No_Source; + Excluded_Sources_Htable.Remove + (Excluded_Sources, Source.File); + end if; - if Source.File = Excluded.File then - if Source.Project = Project - or else Is_Extending (Project, Source.Project) - then - OK := True; - Source.Locally_Removed := True; - Source.In_Interfaces := False; + Next (Iter); + end loop; - if Current_Verbosity = High then - Write_Str ("Removing file "); - Write_Line - (Get_Name_String (Excluded.File) - & " " & Get_Name_String (Source.Project.Name)); - end if; + Proj := Proj.Extends; + end loop; - else - Error_Msg - (Project, In_Tree, - "cannot remove a source from another project", - Excluded.Location); - end if; + -- If we have any excluded element left, that means we did not find + -- the source file - -- We used to exit here, but in fact when a source is - -- overridden in an extended project we have only marked the - -- original source file if we stop here, not the one from - -- the extended project. - -- ??? We could exit (and thus be faster) if the loop could - -- be done only on the current project, but this isn't - -- compatible with the way gprbuild works with excluded - -- sources apparently + Excluded := Excluded_Sources_Htable.Get_First (Excluded_Sources); + while Excluded /= No_File_Found loop - -- exit; - end if; + -- Check if the file belongs to another imported project to + -- provide a better error message. - Next (Iter); - end loop; + Src := Find_Source + (In_Tree => In_Tree, + Project => Project, + In_Imported_Only => True, + Base_Name => Excluded.File); - OK := OK or Excluded.Found; + Err_Vars.Error_Msg_File_1 := Excluded.File; - if not OK then - Err_Vars.Error_Msg_File_1 := Excluded.File; + if Src = No_Source then Error_Msg (Project, In_Tree, "unknown file {", Excluded.Location); + else + Error_Msg + (Project, In_Tree, + "cannot remove a source from an imported project: {", + Excluded.Location); end if; - Excluded := Excluded_Sources_Htable.Get_Next; + Excluded := Excluded_Sources_Htable.Get_Next (Excluded_Sources); end loop; end Mark_Excluded_Sources; @@ -7949,17 +7961,19 @@ package body Prj.Nmsc is begin Source_Names.Reset; - Find_Excluded_Sources (Project, In_Tree); + Find_Excluded_Sources (Project, In_Tree, Excluded_Sources); if (Get_Mode = Ada_Only and then Is_A_Language (Project, Name_Ada)) or else (Get_Mode = Multi_Language and then Project.Languages /= No_Language_Index) then if Get_Mode = Multi_Language then - Load_Naming_Exceptions (Project, In_Tree); + Load_Naming_Exceptions (Project, In_Tree, Excluded_Sources); end if; - Find_Sources (Project, In_Tree, Proc_Data, Allow_Duplicate_Basenames); + Find_Sources + (Project, In_Tree, Proc_Data, Allow_Duplicate_Basenames, + Excluded => Excluded_Sources); Mark_Excluded_Sources; if Get_Mode = Multi_Language then diff --git a/gcc/ada/prj.adb b/gcc/ada/prj.adb index ec7eeaa..8540898 100644 --- a/gcc/ada/prj.adb +++ b/gcc/ada/prj.adb @@ -469,6 +469,52 @@ package body Prj is Reset (Seen); end For_Every_Project_Imported; + ----------------- + -- Find_Source -- + ----------------- + + function Find_Source + (In_Tree : Project_Tree_Ref; + Project : Project_Id; + In_Imported_Only : Boolean; + Base_Name : File_Name_Type) return Source_Id + is + Result : Source_Id := No_Source; + + procedure Look_For_Sources (Proj : Project_Id; Src : in out Source_Id); + -- Look for Base_Name in the sources of Proj + + procedure Look_For_Sources (Proj : Project_Id; Src : in out Source_Id) is + Iterator : Source_Iterator; + begin + Iterator := For_Each_Source (In_Tree => In_Tree, Project => Proj); + while Element (Iterator) /= No_Source loop + if Element (Iterator).File = Base_Name then + Src := Element (Iterator); + return; + end if; + Next (Iterator); + end loop; + end Look_For_Sources; + + procedure For_Imported_Projects is new For_Every_Project_Imported + (State => Source_Id, Action => Look_For_Sources); + + begin + if In_Imported_Only then + Look_For_Sources (Project, Result); + if Result = No_Source then + For_Imported_Projects + (By => Project, + With_State => Result); + end if; + else + Look_For_Sources (No_Project, Result); + end if; + + return Result; + end Find_Source; + -------------- -- Get_Mode -- -------------- diff --git a/gcc/ada/prj.ads b/gcc/ada/prj.ads index 797a479..375c7ba 100644 --- a/gcc/ada/prj.ads +++ b/gcc/ada/prj.ads @@ -1295,6 +1295,15 @@ package Prj is procedure Next (Iter : in out Source_Iterator); -- Move on to the next source + function Find_Source + (In_Tree : Project_Tree_Ref; + Project : Project_Id; + In_Imported_Only : Boolean; + Base_Name : File_Name_Type) return Source_Id; + -- Find the first source file with the given name either in the whole tree + -- (if In_Imported_Only is False) or in the projects imported or extended + -- by Project otherwise. + ----------------------- -- Project_Tree_Data -- ----------------------- diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 8a88cd3..639ab8b 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -7600,7 +7600,7 @@ package body Sem_Res is -- Generate cross-reference. We needed to wait until full overloading -- resolution was complete to do this, since otherwise we can't tell if - -- we are an Lvalue of not. + -- we are an lvalue of not. if May_Be_Lvalue (N) then Generate_Reference (Entity (S), S, 'm'); diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index e7371b0..77bf311 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -7155,7 +7155,7 @@ package body Sem_Util is when N_Assignment_Statement => return N = Name (P); - -- Function call arguments are never Lvalues + -- Function call arguments are never lvalues when N_Function_Call => return False; @@ -7241,7 +7241,7 @@ package body Sem_Util is end; -- Test for appearing in a conversion that itself appears - -- in an Lvalue context, since this should be an Lvalue. + -- in an lvalue context, since this should be an lvalue. when N_Type_Conversion => return Known_To_Be_Assigned (P); @@ -7276,8 +7276,8 @@ package body Sem_Util is return N = Prefix (P) and then Name_Implies_Lvalue_Prefix (Attribute_Name (P)); - -- For an expanded name, the name is an Lvalue if the expanded name - -- is an Lvalue, but the prefix is never an Lvalue, since it is just + -- For an expanded name, the name is an lvalue if the expanded name + -- is an lvalue, but the prefix is never an lvalue, since it is just -- the scope where the name is found. when N_Expanded_Name => @@ -7287,11 +7287,11 @@ package body Sem_Util is return False; end if; - -- For a selected component A.B, A is certainly an Lvalue if A.B is - -- an Lvalue. B is a little interesting, if we have A.B:=3, there is - -- some discussion as to whether B is an Lvalue or not, we choose to - -- say it is. Note however that A is not an Lvalue if it is of an - -- access type since this is an implicit dereference. + -- For a selected component A.B, A is certainly an lvalue if A.B is. + -- B is a little interesting, if we have A.B := 3, there is some + -- discussion as to whether B is an lvalue or not, we choose to say + -- it is. Note however that A is not an lvalue if it is of an access + -- type since this is an implicit dereference. when N_Selected_Component => if N = Prefix (P) @@ -7304,8 +7304,8 @@ package body Sem_Util is end if; -- For an indexed component or slice, the index or slice bounds is - -- never an Lvalue. The prefix is an Lvalue if the indexed component - -- or slice is an Lvalue, except if it is an access type, where we + -- never an lvalue. The prefix is an lvalue if the indexed component + -- or slice is an lvalue, except if it is an access type, where we -- have an implicit dereference. when N_Indexed_Component => @@ -7317,17 +7317,17 @@ package body Sem_Util is return May_Be_Lvalue (P); end if; - -- Prefix of a reference is an Lvalue if the reference is an Lvalue + -- Prefix of a reference is an lvalue if the reference is an lvalue when N_Reference => return May_Be_Lvalue (P); - -- Prefix of explicit dereference is never an Lvalue + -- Prefix of explicit dereference is never an lvalue when N_Explicit_Dereference => return False; - -- Function call arguments are never Lvalues + -- Function call arguments are never lvalues when N_Function_Call => return False; @@ -7414,7 +7414,7 @@ package body Sem_Util is end; -- Test for appearing in a conversion that itself appears in an - -- Lvalue context, since this should be an Lvalue. + -- lvalue context, since this should be an lvalue. when N_Type_Conversion => return May_Be_Lvalue (P); @@ -7424,7 +7424,7 @@ package body Sem_Util is when N_Object_Renaming_Declaration => return True; - -- All other references are definitely not Lvalues + -- All other references are definitely not lvalues when others => return False; diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb index b616337..bc39155 100644 --- a/gcc/ada/sem_warn.adb +++ b/gcc/ada/sem_warn.adb @@ -475,7 +475,7 @@ package body Sem_Warn is and then Present (Entity (N)) and then Entity (N) = Var then - -- If this is an Lvalue, then definitely abandon, since + -- If this is an lvalue, then definitely abandon, since -- this could be a direct modification of the variable. if May_Be_Lvalue (N) then -- 2.7.4