diff options
author | Ghjuvan Lacambre <lacambre@adacore.com> | 2020-03-12 14:12:53 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-06-11 05:53:33 -0400 |
commit | 6593c082b9aae7292714b20ce8f26f76e57d2221 (patch) | |
tree | 84de5c6c6c2bece08f9fcf02be85cd67fdc899ff | |
parent | afb885445f8de9eb4f62e9e647d976202a321850 (diff) | |
download | gcc-6593c082b9aae7292714b20ce8f26f76e57d2221.zip gcc-6593c082b9aae7292714b20ce8f26f76e57d2221.tar.gz gcc-6593c082b9aae7292714b20ce8f26f76e57d2221.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 |