Compiler aborts on an aggregate for a discriminated out_parameter when
the parent type has dynamic_predicates.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* sem_util.adb (Build_Constrained_Itype): Inhibit the generation
of predicate functions for this Itype, which is created for an
aggregate of a discriminated type. The object to which the
aggregate is assigned, e.g a writable actual parameter, will
apply the predicates if any are inherited from the base type.
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -2380,6 +2380,14 @@ package body Sem_Util is
Analyze (Subtyp_Decl, Suppress => All_Checks);
+ -- In addition, inhibit the generation of predicate functions for
+ -- this subtype, because its declaration is not in a declarative
+ -- list, and no predicates apply to the aggregate itself, but only
+ -- to the object to which it may be assigned.
+
+ Set_Has_Dynamic_Predicate_Aspect (Def_Id, False);
+ Set_Has_Predicates (Def_Id, False);
+
Set_Etype (N, Def_Id);
end Build_Constrained_Itype;