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 Botcazou
diff --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);

Reply via email to