diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2022-08-08 16:10:36 +0200 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2022-09-12 10:16:51 +0200 |
commit | cf8af60f6a3910577e99db04dbc757e731558144 (patch) | |
tree | eabf52aeb0870f1b5867b8d92dd1959e9b9197db /gcc/ada | |
parent | a968d80d0e89e847a1928842b7de166a6d42c92e (diff) | |
download | gcc-cf8af60f6a3910577e99db04dbc757e731558144.zip gcc-cf8af60f6a3910577e99db04dbc757e731558144.tar.gz gcc-cf8af60f6a3910577e99db04dbc757e731558144.tar.bz2 |
[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.
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/exp_attr.adb | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb index 6f49db7..0e79b5d 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)); |