From cf8af60f6a3910577e99db04dbc757e731558144 Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Mon, 8 Aug 2022 16:10:36 +0200 Subject: [PATCH] [Ada] Fix validity checking on renamed Old attribute prefix Prefix of attribute Old is captured either as an object renaming or as an object declaration. This is now taken into account when applying validity checks. gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Old]): Adapt to object declaration being rewritten into object renaming. --- gcc/ada/exp_attr.adb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb index 6f49db70a3eb..0e79b5d10cd7 100644 --- a/gcc/ada/exp_attr.adb +++ b/gcc/ada/exp_attr.adb @@ -5088,7 +5088,17 @@ package body Exp_Attr is -- to reflect the new placement of the prefix. if Validity_Checks_On and then Validity_Check_Operands then - Ensure_Valid (Expression (Decl)); + + -- Object declaration that captures the attribute prefix might + -- be rewritten into object renaming declaration. + + if Nkind (Decl) = N_Object_Declaration then + Ensure_Valid (Expression (Decl)); + else + pragma Assert (Nkind (Decl) = N_Object_Renaming_Declaration + and then Is_Rewrite_Substitution (Decl)); + Ensure_Valid (Name (Decl)); + end if; end if; Rewrite (N, New_Occurrence_Of (Temp, Loc)); -- 2.47.3