diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2024-01-18 16:25:06 +0100 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2024-05-13 10:03:27 +0200 |
commit | 5270bfc6e8c85e99c966a696664dcc6878b8c590 (patch) | |
tree | 4741470deaf36a9dfd62dabb2b00dc8ec07b5f4c | |
parent | a14dc3e9b0e4300b58f03d9c5ea83758f912e909 (diff) | |
download | gcc-5270bfc6e8c85e99c966a696664dcc6878b8c590.zip gcc-5270bfc6e8c85e99c966a696664dcc6878b8c590.tar.gz gcc-5270bfc6e8c85e99c966a696664dcc6878b8c590.tar.bz2 |
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.
-rw-r--r-- | gcc/ada/sem_ch13.adb | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 1f3f827..f3212f2 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); |