[Ada] Accept local objects in the prefix of attribute Loop_Entry
authorPiotr Trojanek <trojanek@adacore.com>
Wed, 7 Oct 2020 21:19:28 +0000 (23:19 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 24 Nov 2020 10:16:04 +0000 (05:16 -0500)
gcc/ada/

* sem_attr.adb (Declared_Within): Return True for objects
declared within the attribute Loop_Entry prefix itself.

gcc/ada/sem_attr.adb

index ee651850c286f7e6d5371e848de144ffb0ffce79..0fdc830aa2e3551881ba23727ec2b04430bd0559 100644 (file)
@@ -4375,7 +4375,8 @@ package body Sem_Attr is
             --  within the related loop.
 
             function Declared_Within (Nod : Node_Id) return Boolean;
-            --  Determine whether Nod appears in the subtree of Loop_Decl
+            --  Determine whether Nod appears in the subtree of Loop_Decl but
+            --  not within the subtree of the prefix P itself.
 
             ---------------------
             -- Check_Reference --
@@ -4411,6 +4412,9 @@ package body Sem_Attr is
                   if Stmt = Loop_Decl then
                      return True;
 
+                  elsif Stmt = P then
+                     return False;
+
                   --  Prevent the search from going too far
 
                   elsif Is_Body_Or_Package_Declaration (Stmt) then