This is a regression introduced on the mainline by the freezing change for the
designated type of anonymous access-to-subprogram types, which has uncovered a
small oversight in Analyze_Subprogram_Instantiation, whereby we propagate the
Convention of the generic subprogram onto the named actual only, and not onto
the anonymous actual built alongside the named one.
Tested on x86-64/Linux, applied on the mainline.
2025-12-11 Eric Botcazou <[email protected]>
PR ada/123062
* sem_ch12.adb (Analyze_Subprogram_Instantiation): Also propagate
the Convention and Is_Exported flag onto the anonymous actual.
--
Eric Botcazoudiff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index 750c2c1a06f..3bff9394c83 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -7090,7 +7090,10 @@ package body Sem_Ch12 is
and then Convention (Gen_Unit) /= Convention_Intrinsic
then
Set_Convention (Act_Decl_Id, Convention (Gen_Unit));
+ Set_Convention (Anon_Id, Convention (Gen_Unit));
+
Set_Is_Exported (Act_Decl_Id, Is_Exported (Gen_Unit));
+ Set_Is_Exported (Anon_Id, Is_Exported (Gen_Unit));
end if;
Generate_Definition (Act_Decl_Id);