diff options
Diffstat (limited to 'gcc/ada/exp_ch4.adb')
-rw-r--r-- | gcc/ada/exp_ch4.adb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index d65dac9..ecaeeb2 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -5388,6 +5388,24 @@ package body Exp_Ch4 is Rewrite (N, New_Occurrence_Of (Temp, Loc)); Analyze_And_Resolve (N, PtrT); + + -- When designated type has Default_Initial_Condition aspects, + -- make a call to the type's DIC procedure to perform the + -- checks. Theoretically this might also be needed for cases + -- where the type doesn't have an init proc, but those should + -- be very uncommon, and for now we only support the init proc + -- case. ??? + + if Has_DIC (Dtyp) + and then Present (DIC_Procedure (Dtyp)) + and then not Has_Null_Body (DIC_Procedure (Dtyp)) + then + Insert_Action (N, + Build_DIC_Call (Loc, + Make_Explicit_Dereference (Loc, + Prefix => New_Occurrence_Of (Temp, Loc)), + Dtyp)); + end if; end if; end if; end; |