[Ada] Fix oversight in Delayed_Aspect_Present predicate
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 2 Jun 2020 22:08:17 +0000 (00:08 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 15 Jul 2020 13:42:45 +0000 (09:42 -0400)
gcc/ada/

* sem_ch3.adb (Delayed_Aspect_Present): Fix oversight in loop.
* freeze.adb (Freeze_Object_Declaration): Use Declaration_Node
instead of Parent for the sake of consistency.

gcc/ada/freeze.adb
gcc/ada/sem_ch3.adb

index b24e917..74d15b5 100644 (file)
@@ -3439,11 +3439,11 @@ package body Freeze is
          if Has_Delayed_Aspects (E)
            and then Expander_Active
            and then Is_Array_Type (Typ)
-           and then Present (Expression (Parent (E)))
+           and then Present (Expression (Declaration_Node (E)))
            and then No (Linker_Section_Pragma (E))
          then
             declare
-               Decl : constant Node_Id := Parent (E);
+               Decl : constant Node_Id := Declaration_Node (E);
                Lhs  : constant Node_Id := New_Occurrence_Of (E, Loc);
 
             begin
index a184a87..435c69f 100644 (file)
@@ -3891,9 +3891,11 @@ package body Sem_Ch3 is
 
       begin
          if Present (Aspect_Specifications (N)) then
-            A    := First (Aspect_Specifications (N));
-            A_Id := Get_Aspect_Id (Chars (Identifier (A)));
+            A := First (Aspect_Specifications (N));
+
             while Present (A) loop
+               A_Id := Get_Aspect_Id (Chars (Identifier (A)));
+
                if A_Id = Aspect_Alignment or else A_Id = Aspect_Address then
 
                   --  Set flag on object entity, for later processing at