From: Eric Botcazou <ebotca...@adacore.com> This occurs with an instantiation of Ada.Containers.Vectors in a nested package on an access-to-class-wide type declared with the Put_Image aspect because of too late a freezing for the internal renaming generated for the Put_Image procedure.
The change freezes this renaming immediately in this particular case; this is similar to a trick used in Build_Array_Put_Image_Procedure. gcc/ada/ * sem_ch13.adb (New_Put_Image_Subprogram): In the nondeferred case coming from an aspect and for a type with delaying freezing, also freeze the subprogram immediately. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_ch13.adb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 1f3f8277294..f3212f25dcc 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -15112,6 +15112,11 @@ package body Sem_Ch13 is then Append_Freeze_Action (Ent, Subp_Decl); + -- We may freeze Subp_Id immediately since Ent has just been frozen. + -- This will help to shield us from potential late freezing issues. + + Set_Is_Frozen (Subp_Id); + else Insert_Action (N, Subp_Decl); Set_Entity (N, Subp_Id); -- 2.43.2