From c3b77813eed1060b96f69cc90b761408bcbc6bb0 Mon Sep 17 00:00:00 2001 From: Ed Schonberg Date: Mon, 14 Dec 2020 13:54:28 -0500 Subject: [PATCH] [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. --- gcc/ada/sem_util.adb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index b7b622dbcca..a64cbde17ed 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; -- 2.34.1