From: Piotr Trojanek Date: Mon, 8 Aug 2022 14:10:36 +0000 (+0200) Subject: [Ada] Fix validity checking on renamed Old attribute prefix X-Git-Tag: basepoints/gcc-14~4607 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf8af60f6a3910577e99db04dbc757e731558144;p=thirdparty%2Fgcc.git [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. --- 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));