https://gcc.gnu.org/g:5270bfc6e8c85e99c966a696664dcc6878b8c590
commit r15-398-g5270bfc6e8c85e99c966a696664dcc6878b8c590 Author: Eric Botcazou <ebotca...@adacore.com> Date: Thu Jan 18 16:25:06 2024 +0100 ada: Fix internal error with Put_Image aspect on access-to-class-wide type 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. Diff: --- 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 1f3f82772942..f3212f25dcc8 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);