https://gcc.gnu.org/g:f656344f5fad97f67bd12797a37bb5922021fd5c
commit r16-5473-gf656344f5fad97f67bd12797a37bb5922021fd5c Author: Javier Miranda <[email protected]> Date: Tue Nov 11 19:00:22 2025 +0000 ada: No extra formals on anonymous access types of C subprograms Extra formals must not be added to anonymous access to subprogram types defined in the profile of imported C subprograms. gcc/ada/ChangeLog: * sem_ch6.adb (Create_Extra_Formals): Do not add extra formals to anonymous access to subprogram types defined in the profile of subprograms that have foreign convention. Diff: --- gcc/ada/sem_ch6.adb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 0629dda91a91..1235ea453b6a 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -9077,6 +9077,17 @@ package body Sem_Ch6 is then Freeze_Extra_Formals (E); return; + + elsif Ekind (Ref_E) in E_Subprogram_Type + and then Is_Itype (Ref_E) + and then Nkind (Associated_Node_For_Itype (Ref_E)) in + N_Function_Specification + | N_Procedure_Specification + and then Has_Foreign_Convention + (Defining_Entity (Associated_Node_For_Itype (Ref_E))) + then + Freeze_Extra_Formals (E); + return; end if; -- If the subprogram is a predefined dispatching subprogram then don't
