aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGhjuvan Lacambre <lacambre@adacore.com>2020-03-12 14:12:53 +0100
committerGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-17 13:12:02 -0300
commit6165fa6662b39df16612669647aaa603c29e2e08 (patch)
treeff362a30c26c20a252e07501e4c3b4f88a77c1c9
parent89fedb3fcb5477236b4892e2c8203b0bc9420667 (diff)
downloadgcc-6165fa6662b39df16612669647aaa603c29e2e08.zip
gcc-6165fa6662b39df16612669647aaa603c29e2e08.tar.gz
gcc-6165fa6662b39df16612669647aaa603c29e2e08.tar.bz2
[Ada] Generate predicate checks for on assignments in records
2020-06-11 Ghjuvan Lacambre <lacambre@adacore.com> gcc/ada/ * exp_ch3.adb (Build_Assignment): Generate predicate check if subtype mark has predicate.
-rw-r--r--gcc/ada/exp_ch3.adb14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index 3bc1f60..f412deb 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -1998,6 +1998,20 @@ package body Exp_Ch3 is
Append (Make_Predicate_Check (Typ, Exp), Res);
end if;
+ if Nkind (Exp) = N_Allocator
+ and then Nkind (Expression (Exp)) = N_Qualified_Expression
+ then
+ declare
+ Subtype_Entity : constant Entity_Id
+ := Entity (Subtype_Mark (Expression (Exp)));
+ begin
+ if Has_Predicates (Subtype_Entity) then
+ Append (Make_Predicate_Check
+ (Subtype_Entity, Expression (Expression (Exp))), Res);
+ end if;
+ end;
+ end if;
+
return Res;
exception