From 9b573d421a457852da09253f966246fcc0e16a27 Mon Sep 17 00:00:00 2001 From: Etienne Servais Date: Thu, 16 Dec 2021 14:17:40 +0100 Subject: [PATCH] [Ada] Fix the check of the 'Old prefix gcc/ada/ * sem_attr.adb (Check_Reference): Fix condition. --- gcc/ada/sem_attr.adb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index 017df8d050bb..aa9ae3abfd02 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -5151,11 +5151,14 @@ package body Sem_Attr is -- Entities mentioned within the prefix of attribute 'Old must -- be global to the related postcondition. If this is not the -- case, then the scope of the local entity is nested within - -- that of the subprogram. + -- that of the subprogram. Moreover, we need to know whether + -- Entity (Nod) occurs in the tree rooted at the prefix to + -- ensure the entity is not declared within then prefix itself. elsif Is_Entity_Name (Nod) and then Present (Entity (Nod)) and then Scope_Within (Scope (Entity (Nod)), Subp_Id) + and then not In_Subtree (Entity (Nod), P) then Error_Attr ("prefix of attribute % cannot reference local entities", -- 2.47.2