[Ada] Crash on build of Initialization procedure for derived container
authorEd Schonberg <schonberg@adacore.com>
Wed, 7 Jul 2021 14:56:48 +0000 (10:56 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 21 Sep 2021 15:25:01 +0000 (15:25 +0000)
gcc/ada/

* exp_ch7.adb (Make_Init_Call): Add guard to protect against a
missing initialization procedure for a type.

gcc/ada/exp_ch7.adb

index 33e4f3a..8d08ff1 100644 (file)
@@ -9555,8 +9555,11 @@ package body Exp_Ch7 is
 
       --  If initialization procedure for an array of controlled objects is
       --  trivial, do not generate a useless call to it.
+      --  The initialization procedure may be missing altogether in the case
+      --  of a derived container whose components have trivial initialization.
 
-      if (Is_Array_Type (Utyp) and then Is_Trivial_Subprogram (Proc))
+      if No (Proc)
+        or else (Is_Array_Type (Utyp) and then Is_Trivial_Subprogram (Proc))
         or else
           (not Comes_From_Source (Proc)
             and then Present (Alias (Proc))