From: Ed Schonberg Date: Mon, 14 Dec 2020 18:54:28 +0000 (-0500) Subject: [Ada] Crash on predicated constrained out_parameter X-Git-Tag: basepoints/gcc-13~8053 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c3b77813eed1060b96f69cc90b761408bcbc6bb0;p=thirdparty%2Fgcc.git [Ada] Crash on predicated constrained out_parameter 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 index b7b622dbcca9..a64cbde17edf 100644 --- 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;