aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2022-08-08 16:10:36 +0200
committerMarc Poulhiès <poulhies@adacore.com>2022-09-12 10:16:51 +0200
commitcf8af60f6a3910577e99db04dbc757e731558144 (patch)
treeeabf52aeb0870f1b5867b8d92dd1959e9b9197db /gcc/ada
parenta968d80d0e89e847a1928842b7de166a6d42c92e (diff)
downloadgcc-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.adb12
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));