[Ada] Crash on build of Initialization procedure for derived container
Commit Message
This patch fixes a compiler abort on the construction of the
initialization procedure for a private type completed by a derived
container type whose element type is another container with controlled
components with trivial initializations,
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* exp_ch7.adb (Make_Init_Call): Add guard to protect against a
missing initialization procedure for a type.
@@ -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))