aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2024-01-18 16:25:06 +0100
committerMarc Poulhiès <poulhies@adacore.com>2024-05-13 10:03:27 +0200
commit5270bfc6e8c85e99c966a696664dcc6878b8c590 (patch)
tree4741470deaf36a9dfd62dabb2b00dc8ec07b5f4c
parenta14dc3e9b0e4300b58f03d9c5ea83758f912e909 (diff)
downloadgcc-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.adb5
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);