diff options
author | Ghjuvan Lacambre <lacambre@adacore.com> | 2020-03-12 14:12:53 +0100 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-17 13:12:02 -0300 |
commit | 6165fa6662b39df16612669647aaa603c29e2e08 (patch) | |
tree | ff362a30c26c20a252e07501e4c3b4f88a77c1c9 | |
parent | 89fedb3fcb5477236b4892e2c8203b0bc9420667 (diff) | |
download | gcc-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.adb | 14 |
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 |