diff mbox series

[Ada] Fix oversight in Delayed_Aspect_Present predicate

Message ID 20200715134518.GA23623@adacore.com
State New
Headers show
Series [Ada] Fix oversight in Delayed_Aspect_Present predicate | expand

Commit Message

Pierre-Marie de Rodat July 15, 2020, 1:45 p.m. UTC
The predicate returns true only if an aspect requiring delaying like
Alignment or Address is the first aspect in the list.  The change
also contains a small consistency fix for Freeze_Object_Declaration.

Tested on x86_64-pc-linux-gnu, committed on trunk

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.
diff mbox series

Patch

diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -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


diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -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